实际上我只使用一个部分。我按日期对存储在核心数据中的数据进行排序。
我希望两个部分(最新和历史记录)。在我的第一部分“最新”中我想提出我的最新日期,而在另一部分“历史”我希望将其他日期按日期排序。
我的表格是可编辑的,我正在使用NSFetchedResultsController。
以下是 numberOfRowsInSection 的示例代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Info"
inManagedObjectContext:self.managedObjectContext]];
// Define how we want our entities to be sorted
NSSortDescriptor* sortDescriptor = [[[NSSortDescriptor alloc]
initWithKey:@"date" ascending:NO] autorelease];
NSArray* sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor, nil] autorelease];
[fetchRequest setSortDescriptors:sortDescriptors];
NSString *lower = [mxData.name lowercaseString];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(name = %@)", lower];
[fetchRequest setPredicate:predicate];
NSError *errorTotal = nil;
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&errorTotal];
if (errorTotal) {
NSLog(@"fetch board error. error:%@", errorTotal);
}
return [results count];
[fetchRequest release];
[results release];
}
答案 0 :(得分:1)
您需要修改指定的“UITableViewDataSource
”对象,以便为"numberOfSectionsInTableView:
"方法返回“2”。
然后,您需要在"tableView:cellForRowAtIndexPath:
"方法中返回正确的内容,具体取决于索引路径中指定的部分。
如果您想要一个可选的章节标题(例如“历史记录”或“最新”),您还可以通过sectionIndexTitlesForTableView:
返回一系列章节标题。
答案 1 :(得分:1)
实施- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
这样tableviewController知道要创建多少个部分。如果您没有实现此方法,它将创建默认的节数,即1。
此方法要求数据源返回表视图中的节数。
默认值为1。
可以找到完整的方法说明here
当tableview询问您为某个索引路径显示哪个单元格时,您可以为该单元格提供正确的数据。假设您有2个NSArray包含最新和历史行的标题,您可以执行以下操作:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//create cell
static NSString *CellIdentifier = @"MyCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(indexPath.section == 0){
//set title for latest
NSString *title = [[self latestTitles] objectAtIndex:indexPath.row];
[[cell textLabel] setText:title];
}else{
//set title for history
NSString *title = [[self historyTitles] objectAtIndex:indexPath.row];
[[cell textLabel] setText:title];
}
//Update: add NSLog here to check if the cell is not nil..
NSLog(@"cell = %@", cell);
return cell;
}