gpt4 book ai didi

ios - 具有不同可选部分的 UITableView?

转载 作者:搜寻专家 更新时间:2023-11-01 07:32:26 25 4
gpt4 key购买 nike

我正在寻找解决一些特殊需求的“好”方法:

我有一个包含不同部分的 UITableView,例如:

  • 基础数据
  • 关于我
  • 兴趣
  • 图片

基础数据始终包含值(但行数仍然可变)——所有其他“类别”可能包含行,也可能为空。如果没有数据,则不应显示该类别。

不,我第一个解决这个问题的想法是:

创建所有可能的类别(但可能是 20 个或更多)- 并执行类似的操作:

  override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

var count:Int = 0

switch (section) {
case 0:
count = baseHeaders.count
case 1:
if(mapItem.courses?.count > 0) {
count = mapItem.courses!.count
}
break;
default:
count = 0
}

return count
}

如果计数为空,我还会检查:titleForHeaderInSection,然后返回该部分没有标题。

但是:这是一个好方法吗?我关心的是创建 20 个部分并且只使用了 2 个。还有另一种更好的方法吗?我可以手动创建部分吗?如果是,我应该吗?这样只有基本类别可见,如果有可用数据,则附加所有其他内容。

最佳答案

这看起来像是我解决此类问题的方式。我正在使用枚举(Obj-C,尤其是 Swift)来处理和识别我的部分,并且我总是返回全部可能的部分:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return FormSection.count // enum function
}

但是,在 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 中,我通过返回 0 行来关闭未使用的部分。

在与您的动态表类型斗争之后,我看到的好处是所有部分始终位于同一索引处,这使得单元格管理相对容易:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let section:FormSection = FormSection(rawValue:indexPath.section)!

switch section {
case .Header:
//…
default:
//…
}
}

节页眉/页脚也是如此:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
switch section {
case FormSection.Header.rawValue:
return nil
case FormSection.RoomSetup.rawValue where foo == false:
return nil
default:
// return header with title = FormSection(rawValue: section)?.headerTitle()
// Swift enums ftw ;)
}

行数是在运行时计算/获取的:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let section:FormSection = FormSection(rawValue:section)!
switch section {
case .Section1:
return fooExpanded ? (numberOfFoo) : 0
case .Section2:
return model.barCount()
default:
return 1
}
}

关于ios - 具有不同可选部分的 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com