我正在尝试这样做,所以我的UITableView
总是在底部有一个特定的行,固定在那里。
我正在使用NSFetchedResultsController
执行提取,然后使用常规Apple样板来检测合并的上下文更改。
我想做的事情总是在结果的底部有一行,“不是你想要的?”。我该怎么做?我对自定义单元格类型感到满意,但是我甚至无法将相同类型的单元格固定到底部。
添加比fetchedResultsController更多的行的代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return[sectionInfo numberOfObjects]+1;
}
cellForRowForIndexPath的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifierNormal = @"NormalCell";
UITableViewCell *cell = nil;
cell = [tableView CellIdentifierNormal];
if (cell == nil) {
cell = [[NormalCell createCell]autorelease];
}
// For regular results, go configure the cell. For the extra 'Special Row' at bottom, assign it the Special cell.
if([indexPath indexAtPosition:0] <= [[[fetchedResultsController sections] objectAtIndex:0] numberOfObjects])
[self configureCell:cell atIndexPath:indexPath];
else {
if (cell == nil) {
cell = [[SpecialCell createCell] autorelease];
}
SpecialCell *nc = (SpecialCell*)cell;
nc.labelFirstLine.text = @"Not What You're Looking For?";
}
return cell;
}
如果不使用NSFetchedResultsController,这将有效,但会发生的是,无论何时更新单元,都会从Controller调用方法'configureCell',它对SpecialCell一无所知。
From - (void)controller:(NSFetchedResultsController *)controller didChangeObject:......
case NSFetchedResultsChangeUpdate:
[self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
这是configureCell:
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
// Configure the cell
// Go get it from coredata
NormalCell *vc = (NormalCell*)cell;
NormalObject *no = (NormalCell *)[fetchedResultsController objectAtIndexPath:indexPath];
....<ASSIGNMENT TO CELL HERE>....
}
答案 0 :(得分:1)
在cellForRowAtIndexPath
中为数组中的不同行创建单元格时,请保持条件,如果它到达数组的末尾,则添加自定义单元格,并使用您想要的字符串...
有关详细信息,请添加代码...