iPhone - 使用 Interface Builder 的具有 >1 个部分的静态 UITableView
Posted
技术标签:
【中文标题】iPhone - 使用 Interface Builder 的具有 >1 个部分的静态 UITableView【英文标题】:iPhone - Static UITableView with >1 sections using Interface Builder 【发布时间】:2013-11-24 14:30:50 【问题描述】:我在我的应用程序中添加了一个新的 TableView。我将单元格类型更改为静态并将一些标签拖到单元格中。现在我想以编程方式访问单元格。例如:第 3 节中的单元格 4 应该打开 google.com 的 safari。
我创建了一个新的 UITableViewController 类。然后我将节数更改为 3,并在 numberofcellsinsection 方法中添加了 switch/case 语句。
如果我运行应用程序并打开表格视图,应用程序就会崩溃。有人可以帮助我设置 TableView 吗?
谢谢!
编辑
这是日志
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
*** First throw call stack:
【问题讨论】:
请发布崩溃日志。 @XCodeMonkey 编辑了它 要分别访问不同的单元格,您可能需要为此使用不同的标识符。尝试在单元格中使用 if 或 switch 语句来访问不同的单元格。查看此链接以更好地了解它是如何完成的...***.com/questions/14303832/… 我没有任何标识符,因为我使用的是静态单元格。我是否必须更改 cellForRowAtIndexPath 方法中的某些内容? 当您使用静态单元格时,您不应该实现任何数据源方法。您应该阅读“ios 表视图编程指南”中的“使用数据填充静态表视图”部分。 【参考方案1】:我找到了一个可行的解决方案。
我像这样编辑了 cellForRowAtIndexPath 方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
return cell;
现在我可以使用 if 语句访问我的静态单元格,例如:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.section == 2)
if (indexPath.row == 1)
NSLog(@"Tap");
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://www.google.com"]];
【讨论】:
以上是关于iPhone - 使用 Interface Builder 的具有 >1 个部分的静态 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - 使用 Interface Builder 的具有 >1 个部分的静态 UITableView
如何在 Interface Builder 中获取 iPhone,而不是 iPad 视图
如何为 iPhone 创建自定义 Interface Builder 插件?
如何在 iPhone 的 Interface Builder 中构建 UITableView 部分的标题视图?
在 Interface Builder 中创建的 Table View Controller 的底部单元格在 iPhone X 上被剪裁和隐藏