以下内容用作将nib文件中的tableviewcell放入tableview的代码。我把tableviewcell放在与tableview相同的nib中。我已经尝试在viewdidload中初始化单元格但是没有去。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"identifier";
NSLog(@"the cellidentifier is %@", CellIdentifier);
bookmarksTableViewCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSLog(@"the cell is %@", bookmarksTableViewCell);
return bookmarksTableViewCell;
}
我得到的错误是
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
我已经检查了IB中的连接并重新连接了它们,但结果却相同。当我尝试NSLog'ing单元格时,它变为null。
答案 0 :(得分:1)
你需要这样做
static NSString *CellIdenetifier = @"Cell";
BookMarksTableViewCell *cell = (BookMarksTableViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
cell = [[BookMarksTableViewCell alloc] initWithStyle:UITableViewCellStyleSubTitle reuseIdentifer:CellIdentifier];
}
我不确定你是否需要,但我认为我把它包括在内。
答案 1 :(得分:1)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"identifier";
NSLog(@"the cellidentifier is %@", CellIdentifier);
bookmarksTableViewCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (bookmarksTableViewCell == nil){
//allocate your cell here
}
return bookmarksTableViewCell;
答案 2 :(得分:1)
当然是空的。
如果表视图需要显示的队列中有更多的单元格,则从
返回nildequeueReusableCellWithIdentifier:
要求数据源创建新单元格,直到分配足够数量的单元格。检查NULL:
bookmarksTableViewCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (bookmarksTableViewCell == NULL)
bookmarksTableViewCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStylePlain reuseIdentifier:cellIdentifier] autorelease];
return cell;
啊,ps:忘掉Interface Builder。