' NSInvalidArgumentException' - [UIViewController tableView:numberOfRowsInSection:] - 无法识别的选择器发送到实例

时间:2015-11-18 19:41:53

标签: ios iphone swift uitableview

我知道这是一个讽刺性的问题(非常抱歉),但我已经尝试了迄今为止我在SO上找到的所有内容,但我仍然收到错误此错误:

  

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7fc4a9705960'

让我用图像清楚地说明这些部分,这样我们就可以为解决相关问题提供一个很好的答案。

这是文件夹视图(ViewController - 主视图,TableView1是子视图):

enter image description here

我的TableView1.xib文件有:

enter image description hereenter image description here

我还编辑了我的TableView1.swift

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
      return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
}

在我的Main.Storyboard

当我选择View Controller enter image description hereenter image description here)时,它看起来像这样:

    1. enter image description here
    1. enter image description here

但是,当我点击Viewenter image description here)时:

    1. enter image description here
    1. enter image description here

在途中我做错了什么或错过了什么?

更多信息:

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

-[UIViewController tableView:numberOfRowsInSection:]:

因此,根据错误日志,当你设置deletegate和datasource时会出现类型不匹配的情况。因为在xib上你说tableview1.xib应该在ViewController1.swift中实现datasource和delegate.But,你错误地引用了UIViewController。 现在你看到UIViewController只是未知的实现委托和数据源。因为它没有发现(显然)它崩溃。 这样:

let controller : UIViewController = UIViewController(nibName: "TableView1", bundle: nil)

更改为:

let controller : UITableViewController = UITableViewController(nibName: "TableView1", bundle: nil)

应该有用。

答案 1 :(得分:0)

你在其他地方打电话给这个功能吗?

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10

}

看起来除了委托之外还调用了这个函数。

答案 2 :(得分:0)

没有关于Swift的线索,但是iOS上的ObjC ......

Exception表示类UIViewController无法处理消息[UIViewController tableView:numberOfRowsInSection:]。这表明,在某些时候,dataSource被更改为“super”。

你需要“覆盖”吗?您没有覆盖消息实现,因为UIViewController没有实现它。