TLIndexPathDataModel
使用TLIndexPathTools作为数据结构很容易做到这一点。基于块的初始化程序提供了将数据组织成部分的几种方法之一:
NSArray *sortedEvents = ...; // events sorted by date
TLIndexPathDataModel *dataModel = [[TLIndexPathDataModel alloc] initWithItems:sortedEvents sectionNameBlock:^NSString *(id item) {
MyEvent *event = (MyEvent *)item;
NSString *year = ...; // calculate section name for the given item from date
return year;
} identifierBlock:nil];
然后使用数据模型 API,数据源方法变得非常简单:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.dataModel.numberOfSections;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.dataModel numberOfRowsInSection:section];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellId = ...;
UITableViewCell *cell = ...; // dequeue cell
MyEvent *event = [self.dataModel itemAtIndexPath:indexPath];
... // configure cell
return cell;
}