Tableview没有加载/触发

时间:2015-03-13 15:12:26

标签: ios xcode uitableview swift

我有以下单一视图应用。 tablview委托/数据源通过IB连接到Root View Controller。当应用加载时,tableview为空。我在ViewController.swift文件的所有方法中设置了一个断点,没有任何内容被击中。

enter image description here

我在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中没有遇到任何断点,我认为仍然没有连接。任何想法可能是什么或我做错了什么?

该项目只有单一视图应用程序文件:

enter image description here

- 编辑 -

更新了单元格标识符,但表中仍没有数据。

enter image description here

以下是从tableveiw到Root View Controller的连接。

enter image description here

3 个答案:

答案 0 :(得分:2)

看起来你有两个问题:

1。在IB

中未正确分配ViewController类

选择Root View Controller后,右侧窗格中会显示什么?它应该是ViewController(您的ViewController类的名称),如下所示:

enter image description here

请注意,IB不允许您选择不属于UITableViewController子类的类。如果您有一个空的故事板并拖出导航控制器,它创建的根视图控制器是一个表视图控制器,它只允许您将其与UITableViewController子类关联。如果您真的不想使用UITableViewController,则必须删除IB为您创建的Root View Controller,拖出常规View Controller,添加Table View,然后根据需要挂钩所有内容用手。

2。插座未正确连接

你连接插座的方式并不合适。 UITableView应该有引用dataSourcedelegate引用RootViewController。像这样:

enter image description here

而RootViewContoller应该引用出口dataSource和委托引用表视图。

崩溃你得到([UINavigationItem tableView:numberOfRowsInSection:]: unrecognized selector sent to instance)它清楚你已经连接了dataSource并委托给导航栏,而不是View控制器(黄色圆圈故事板层次结构视图)。

答案 1 :(得分:0)

检查故事板中的标识符 - 它应该说 test 我有 switchCell 。您可以通过单击原型单元格在右侧的栏中找到它:

enter image description here

答案 2 :(得分:0)

正如您在单元格检查器中看到的那样,原型单元格的样式是" Custom"。这样的单元格没有textLabel。将样式切换为Default,您将获得一个具有textLabel

的UITableViewCell

如果没有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;
}