【问题标题】:UITableView without <UITableViewDelegate, UITableViewDataSource> still works!没有 <UITableViewDelegate, UITableViewDataSource> 的 UITableView 仍然有效!
【发布时间】:2011-05-16 16:46:02
【问题描述】:
我读到,每当您使用 UITableView 时,您应该使您的控制器类符合 <UITableViewDelegate, UITableViewDataSource> 协议(如果您不使用定制的 UITableViewController 类)。
所以我的超类是UIViewController,但我忘记在.h 文件中添加<UITableViewDelegate, UITableViewDataSource> 声明。出于某种原因,该表仍然有效。它从类中获取数据,单击单元格按预期工作。
有人可以向我解释一下 - 为什么它会起作用?
【问题讨论】:
标签:
cocoa-touch
ios
uitableview
【解决方案1】:
如果您的实现中仍有适当的方法,它将正常工作。当表格视图需要调用这些方法时,它不会检查您的类是否声明它符合 UITableViewDelegate 或 UITableViewDataSource,而是检查您的类是否实现了所需的方法。
明确声明您遵守协议的目的是使编译器可以生成警告。如果您尝试将 ViewController 的实例分配给一个 id,但没有在标头中声明它,您将收到编译器警告,但如果实现了所有必需的 UITableViewDataSourceDelegate 方法,它仍然可以工作。