管理多个单元
斯威夫特3.0
在iOS中,通常在tableView中使用不同类的多个单元格。 由于我们的cellForRowAtIndexPath可能很快变得肿,所以这可能会变得很毛茸茸。 我已经看到开发人员直接使用indexpath确定要出队的单元。 对单元格的索引路径进行硬编码不仅使代码更难阅读,而且也使更改变得更加困难。 我发现的解决方案是使用cellList来管理所有这些。
将单元格限制为枚举
第一步是创建一个枚举,其中包含表视图可以出队的所有可能的单元格。 假设我们的tableView将显示有关使用3个单元格的人的信息。 一个AddressTableViewCell,EmailTableViewCell和PhoneTableViewCell。 然后,我们的枚举将包含三个值,如下所示:
列举PersonTableIndexPath {
案例地址
案例电子邮件
手机壳
}
这确保了我们的tableView仅能够使枚举中列出的单元格出队。 如果需要,还可以更新枚举以支持关联的值,但是此示例将保持简单。
使用单元格列表管理单元格
让cellList:[PersonTableIndexPath] = [.Address,.Email,.Phone]
我们的cellList本质上是一个枚举数组。 这样,我们将索引路径隐式链接到单元格类。 唯一的好处就是更改枚举在单元格中的位置List将直接与tableView中显示的索引路径相关。 如果已经正确处理了该cellForRow,则无需更改它。
在Table View的数据源中使用单元格列表
在numberOfRowsInSection中,一个衬线就足够了
返回cellList.count
在cellForRowAtIndexPath中,我们可以如下使用cellList:
让cellType = cellList [indexPath.row]
切换cellType {
案例。地址:
返回setupAddressTableViewCell(indexPath)
案例。电子邮件:
返回setupEmailTableViewCell(indexPath)
手机。
返回setupPhoneTableViewCell(indexPath)
}
我们的设置方法将负责使单元出队,设置和返回。 由于开发人员确切知道单元格设置代码的位置,因此这使代码非常干净。 而且,cellList的魔力还没有结束。 如果我们将cellList更改为可变的,则可以在运行时更改枚举的顺序🙂
在运行时更新单元列表
如果我们需要添加另一个手机单元,我们要做的就是更新单元列表。
cellList.append(.Phone)
tableView.reloadData()
am! 真的是这样。 我们的表格视图将显示多余的手机单元作为最后一个单元,而开发人员几乎无需执行任何操作。 单元列表非常强大,因为它可以帮助管理复杂的表视图,尤其是基于状态的表视图。 如果表视图支持部分,则cellList可以成为一个数组数组。 可能性是无止境!
- XCode转换为ARC,创build通用二进制失败,错误为“无法找出体系结构types”
- 如何从NSArray中随机选取图片并在视图中随机显示
- 使用AVMutableVideoComposition导出时的video方向问题
- 使用iOS项目从Jenkins Jobs提取测试结果
- 应用程序颜色在devise和模拟器/设备之间变化
- didFailToRegisterForRemoteNotificationsWithError:用户拒绝错误?
- iOS的iPhone SQLite和Monotouch的问题
- iOS 10.1.1弹出窗口说“应用程序可能会降低你的iPhone速度”
- MobileDevice Framework AMDeviceCopyValue获取ECID