使用 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
Xcode Storyboards - iPhone 7 Plus 没有状态栏?