假设我有一个列表/数组:
let sections = [new Section("today", todaylist),
new Section("yesterday", yestlist),
new Section("25th February", list25f),...]
正如您所看到的,每个部分都有一个部分名称和一个对象列表,这些对象将填充该特定部分内的单元格。
现在,让我们说这些对象只是简单的字符串。
我将如何以编程方式遍历sections
并创建一个具有适当标题和适当数量的单元格的新部分。
I.e-第no节的细胞数量。我会:
sections[i].getList().count
在"今天"这相当于
todaylist.count
我无法在故事板中添加这些部分,因为它会有所不同,表视图将是动态的!
感谢您的帮助!
答案 0 :(得分:19)
查看此代码:
import UIKit
class TableViewController: UITableViewController {
var names = ["Vegetables": ["Tomato", "Potato", "Lettuce"], "Fruits": ["Apple", "Banana"]]
struct Objects {
var sectionName : String!
var sectionObjects : [String]!
}
var objectArray = [Objects]()
override func viewDidLoad() {
super.viewDidLoad()
for (key, value) in names {
println("\(key) -> \(value)")
objectArray.append(Objects(sectionName: key, sectionObjects: value))
}
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return objectArray.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objectArray[section].sectionObjects.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell
// Configure the cell...
cell.textLabel?.text = objectArray[indexPath.section].sectionObjects[indexPath.row]
return cell
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return objectArray[section].sectionName
}
}
希望它会对你有所帮助。
我的old答案中的参考资料。
答案 1 :(得分:0)
您可以使用字典来完成此操作,因为您只处理字符串,这可能很简单。
例如
let sections : [String: [String]] = [
"Today": ["list1", "list2", "list3"],
"Yesterday": ["list3", "list4", "list5"]
// and continue
]
和部分使用此:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sections.count
}
对于一个部分内的单元格数量,您可以创建另一个包含部分标题的数组
let days = ["Today", "Yesterday", "SomeOtherDays"]
和numberOfRowsInSection:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let dayKey = days[section]
if let daylist = sections[dayKey] {
return daylist.count
} else {
return 0
}
}