我知道这是一个讽刺性的问题(非常抱歉),但我已经尝试了迄今为止我在SO上找到的所有内容,但我仍然收到错误此错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7fc4a9705960'
让我用图像清楚地说明这些部分,这样我们就可以为解决相关问题提供一个很好的答案。
这是文件夹视图(ViewController
- 主视图,TableView1
是子视图):
我的TableView1.xib
文件有:
我还编辑了我的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
()时,它看起来像这样:
在途中我做错了什么或错过了什么?
更多信息:
答案 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没有实现它。