使用 Xcode 5 Storyboards 构建带有原型表视图单元的动态表视图

Posted

技术标签:

【中文标题】使用 Xcode 5 Storyboards 构建带有原型表视图单元的动态表视图【英文标题】:Using Xcode 5 Storyboards to Build Dynamic TableViews with Prototype Table View Cells 【发布时间】:2013-11-12 03:34:19 【问题描述】:

我正在尝试按照本教程进行操作,但我得到了空表。

http://www.techotopia.com/index.php/Using_Xcode_5_Storyboards_to_Build_Dynamic_TableViews_with_Prototype_Table_View_Cells

首先,教程正在使用


CarTableViewCell *cell = [tableView 
      dequeueReusableCellWithIdentifier:CellIdentifier 
      forIndexPath:indexPath];

我遇到了一个错误:

2013-11-12 11:29:35.940 TableViewStory[14940:70b] *** Terminating app due to uncaught 
exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with 
identifier carTableCell - must register a nib or a class for the identifier or connect a 
prototype cell in a storyboard'

所以我补充说:

[self.tableView registerClass:[CarTableViewCell class] 
    forCellReuseIdentifier:@"carTableCell"];

在我的 viewDidLoad 上。添加 registerClass 后,我能够构建我的应用程序。但是我的桌子空了。

谢谢。

【问题讨论】:

您是否在情节提要中为您的单元格指定了一个标识符?如果是这样,请确保拼写正确。如果您在情节提要中设计了单元格,则不需要注册课程(实际上您不应该)。 【参考方案1】:

您需要适当地实现 cellForRowAtIndexPath 方法:

- (UITableViewCell *)tableView:(UITableView *)iTableView cellForRowAtIndexPath:(NSIndexPath *)iIndexPath

    static NSString *cellIdentifier = @"Cell";

    UITableViewCell *cell = [iTableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    

// Customize your cell

return cell;

您没有为重用标识符 CellIdentifier 注册 nib 或类。您正在使用下面的部分

CarTableViewCell *cell = [tableView 
      dequeueReusableCellWithIdentifier:CellIdentifier 
      forIndexPath:indexPath];

替换为

CarTableViewCell *cell = [tableView 
          dequeueReusableCellWithIdentifier:CellIdentifier];

【讨论】:

嗨,我确实在 viewDidLoad 方法上添加了一个 tableView registerClass 方法。并且还尝试使用上面的这种方法,它仍然给我一个空表。谢谢 让我更正一下,当我使用 CarTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];我收到此错误:2013-11-12 14:43:47.062 TableViewStory[15135:70b] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“UITableView dataSource 必须从 tableView:cellForRowAtIndexPath: 返回一个单元格:”* ** 首先抛出调用栈:【参考方案2】:

我重做了教程,一切正常。

还是谢谢。

【讨论】:

以上是关于使用 Xcode 5 Storyboards 构建带有原型表视图单元的动态表视图的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS sdk xcode 4.3/storyboards

MagicalRecord 入门

Xcode Storyboards - iPhone 7 Plus 没有状态栏?

Xcode OS X Storyboards:如何获得对***“窗口内容”视图控制器的引用?

将项目从 XIB/NIB 移动到 Storyboards

Xcode 4 不允许我打开在 Xcode 5 中编辑的情节提要