0

实际上我只使用了一个部分。我按日期对存储在核心数据中的数据进行排序。

我想要两个部分最新历史)。在我的第一部分“最新”中,我想输入我的最新日期,而在另一部分“历史”中,我想输入按日期排序的其他日期。

我的表是可编辑的,我正在使用 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];
}
4

2 回答 2

1

您需要修改您指定的“ ”对象以为方法UITableViewDataSource返回“2” 。numberOfSectionsInTableView:

然后你需要在你的" tableView:cellForRowAtIndexPath:"方法中返回正确的东西,这取决于索引路径中指定的部分。

如果你想要一个可选的章节标题(例如“历史”或“最新”),你也可以通过返回一个章节标题数组sectionIndexTitlesForTableView:

于 2012-12-13T22:18:56.400 回答
1

实施- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
} 

这样,tableviewController 就知道要创建多少个部分。如果您不实现此方法,它将创建默认的节数,即 1。

这个方法被要求数据源返回表格视图中的节数。

默认值为 1。

完整的方法描述可以在这里找到

更新:

当 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;
}
于 2012-12-13T22:21:06.453 回答