这可能有点复杂。我根据我创建的事件将行添加到UITableView中。每个活动都有一个开始时间。我用这个开始时间来创建部分。
为了说明,如果我有三个事件:一个从上午8:00开始,一个从中午12:00开始,第三个从上午8:00开始,那么第一个和第三个事件将显示为该部分的两个元素标题为上午8:00,第二个事件将显示为标题截止时间为12:00 pm的部分。
我有一个部分列表var sectionList = Dictionary<Int, [Event]>()
它将事件的开始时间作为键(Int),以及当时作为项开始的事件数组。在我的例子中,我的字典将是{800: [event1, event3], 1200: [event2]}
为了按正确的排序顺序排列这些,我创建了一个数组sortedKeys = Array(sectionList.keys).sorted(<)
在应用程序中创建事件项后,将调用我的viewWillAppear方法:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
getSortedSectionList()
tableView.reloadData()
}
在重新加载UITableView数据之前,它会创建一个新的已排序部分列表和已排序的键列表。
这适用于上午8:00创建第一个事件。不幸的是,当我创建第二个事件时,事件和项目都不会显示在我的列表中。但是,当我添加第三个事件时,它与第一个事件放在同一个部分中,并且可见。
为什么第二部分没有出现?如何才能显示?
答案 0 :(得分:0)
Dummy,你忘了实现numberOfSectionsInTableView!
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
if sortedKeys.count > 0 {
return sortedKeys.count
} else {
return 1
}
}