我有以下单一视图应用。 tablview委托/数据源通过IB连接到Root View Controller。当应用加载时,tableview为空。我在ViewController.swift文件的所有方法中设置了一个断点,没有任何内容被击中。
我在ViewController.swift中添加了以下内容(UITableViewDataSource现在也在那里):
UITableViewDelegate
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "test")
cell.textLabel?.text = "just a cell"
return cell;
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
由于在ViewController.swift中没有遇到任何断点,我认为仍然没有连接。任何想法可能是什么或我做错了什么?
该项目只有单一视图应用程序文件:
- 编辑 -
更新了单元格标识符,但表中仍没有数据。
以下是从tableveiw到Root View Controller的连接。
答案 0 :(得分:2)
看起来你有两个问题:
选择Root View Controller后,右侧窗格中会显示什么?它应该是ViewController(您的ViewController类的名称),如下所示:
请注意,IB不允许您选择不属于UITableViewController
子类的类。如果您有一个空的故事板并拖出导航控制器,它创建的根视图控制器是一个表视图控制器,它只允许您将其与UITableViewController
子类关联。如果您真的不想使用UITableViewController
,则必须删除IB为您创建的Root View Controller,拖出常规View Controller,添加Table View,然后根据需要挂钩所有内容用手。
你连接插座的方式并不合适。 UITableView
应该有引用dataSource
和delegate
引用RootViewController。像这样:
而RootViewContoller应该引用出口dataSource和委托引用表视图。
从崩溃你得到([UINavigationItem tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
)它清楚你已经连接了dataSource并委托给导航栏,而不是View控制器(黄色圆圈故事板层次结构视图)。
答案 1 :(得分:0)
检查故事板中的标识符 - 它应该说 test 我有 switchCell 。您可以通过单击原型单元格在右侧的栏中找到它:
答案 2 :(得分:0)
正如您在单元格检查器中看到的那样,原型单元格的样式是" Custom"。这样的单元格没有textLabel。将样式切换为Default,您将获得一个具有textLabel
。
如果没有textLabel,显然会出现错误,您应该将textLabel?
替换为textLabel!
:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "test")
cell.textLabel!.text = "just a cell"
return cell;
}