2013-10-15 139 views
0

我有一個數組,我需要在UITableView中分段顯示。根據日期排列創建年份

我目前按照日期順序顯示所有對象下的一個部分,但我需要按年份對它們進行分區,我不確定如何去做。

我的目標是一樣的東西......

@interface MyEvent : NSObject 

@property NSDate *date; 
@property NSString *title; 
@property NSString *detail; 

@end 

我的數組是按日期順序排列,這些對象的數組。

我可以直接從這個數組中做到這一點,還是我需要將數組分成二維數組。

即NSArray的NSArray,其中第二個NSArray中的每個對象都在同一年。

回答

1

這是很容易使用TLIndexPathDataModelTLIndexPathTools爲你的數據結構做。基於塊的初始化提供了一些方法來將數據組織成部分之一:

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; 
} 
相關問題