在第一个新部分(Swift)

时间:2015-07-08 18:20:12

标签: ios swift uitableview

这可能有点复杂。我根据我创建的事件将行添加到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创建第一个事件。不幸的是,当我创建第二个事件时,事件和项目都不会显示在我的列表中。但是,当我添加第三个事件时,它与第一个事件放在同一个部分中,并且可见。

为什么第二部分没有出现?如何才能显示?

1 个答案:

答案 0 :(得分:0)

Dummy,你忘了实现numberOfSectionsInTableView!

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    if sortedKeys.count > 0 {
        return sortedKeys.count
    } else {
        return 1
    }
}