在我的UITableView中,我最近改变了单元格的结构,从以前只是将UILabels放在单元格的contentView中,将两个UIViews(CellFront和CellBack,在另一个之上)添加到contentView中(所以我可以实现通过滑动顶部一个并露出下部一个滑动效果并将UILabels添加到顶部UIView。
然而,现在,无论出于何种原因,细胞永远不会被初始化,因此我的UITableView充满了空白细胞。
我的单元格创建如下(ArticleCell是UITableViewCell的子类):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = nil;
ArticleInfo *articleInfo = [self.fetchedResultsController objectAtIndexPath:indexPath];
// Checks if user simply added a body of text (not from a source or URL)
if ([articleInfo.isUserAddedText isEqualToNumber:@(YES)]) {
CellIdentifier = @"BasicArticleCell";
}
else {
CellIdentifier = @"FullArticleCell";
}
ArticleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[ArticleCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// If the user simply added a body of text, only articlePreview and progress has to be set
cell.preview = articleInfo.preview;
// If it's from a URL or a source, set title and URL as well
if ([articleInfo.isUserAddedText isEqualToNumber:@(NO)]) {
cell.title = articleInfo.title;
cell.URL = articleInfo.url;
}
return cell;
}
但是我在if语句中的initWithStyle方法上设置了一个断点,它永远不会被调用:
这会导致什么?我每次都会删除应用程序并从头开始构建它,因此数据肯定会添加到UITableView中,但所有单元格都是空白的。我可以告诉我添加了一堆单元格,因为我在所有单元格上都有公开指示符,而表格视图只是填充了仅带指示符的空单元格。
我做错了什么?
答案 0 :(得分:2)
尝试
ArticleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
而不是
ArticleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
第一个是旧的标准方式。它不会为您创建一个单元格。在第二个时,将从故事板创建一个单元格。因此,如果你使用故事板,你应该使用你现在使用的方法,但它永远不会信息if分支,因为单元格永远不会是零。
在实例化表单故事板时,永远不会调用initWithStyle:reuseIdentifier:
。在-initWithCoder:
或-layoutSubviews