0

我正在尝试使用以下代码以编程方式从视图控制器转换为表视图控制器(与情节提要 segue 相比):

[self.navigationController pushViewController:photosTVC animated:YES];

但是,加载表格视图控制器时出现“断言错误”;具体来说,在此方法的第二行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Photo";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
...

表格视图控制器在使用 segue 转换到它时加载得很好,但当我以这种方式转换时就不行了。我可以尝试的任何想法将不胜感激!

谢谢阅读。

编辑:完整的错误文本如下:

-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:] 中的断言失败,/SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:4460

4

1 回答 1

1

如果您使用故事板,则必须使用或为您完成[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];注册才能使用单元格。registerNib:forCellReuseIdentifier:registerClass:forCellReuseIdentifier:

因此,[tableView dequeueReusableCellWithIdentifier:CellIdentifier]当您以编程方式执行此方法时,请仅使用此方法,除非有特定原因不这样做。

编辑:

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    // or whatever cell initialisation method you have / created
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
于 2012-12-03T01:30:28.273 回答