我已经读过,每当你使用UITableView
时,你应该将你的控制器类符合<UITableViewDelegate, UITableViewDataSource>
协议(如果你没有使用定制的UITableViewController
类)。
所以我的超类是UIViewController
但是我忘了在.h文件中添加<UITableViewDelegate, UITableViewDataSource>
声明。出于某种原因,该表仍然有效。它从类中获取数据,单击单元格按预期工作。
有人可以向我解释一下 - 为什么它有效?
答案 0 :(得分:8)
如果您的实现中仍有适当的方法,它将正常工作。当表视图需要调用这些方法时,它不会检查您的类是否已声明它符合UITableViewDelegate或UITableViewDataSource,而是检查您的类是否实现了所需的方法。
明确声明您符合协议的要点是编译器可以生成警告。如果您尝试将ViewController的一个实例分配给一个id,但是没有在头文件中说明,那么您将收到编译器警告,但如果实现了所有必需的UITableViewDataSourceDelegate方法,它仍然可以工作。