我们可以使用UITableViewDataSource
,UITableViewDelegate
完全替换UITableViewController
,例如,这两个代码行之间有区别吗?
@interface ShareViewController : UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
我们可以使用UITableViewDataSource
,UITableViewDelegate
完全替换UITableViewController
,例如,这两个代码行之间有区别吗?
@interface ShareViewController : UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
这两行代码之间有很大的不同。这个
@interface ShareViewController : UITableViewController
意味着您的 ShareViewController 继承自UITableViewController
,因此它提供了例如一个UITableView
作为主视图。这个
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
意味着您的 ShareViewController 是一个经典的 UIViewController (继承自UIViewController
),并简单地实现协议来管理表视图。
UITableViewController最重要的是一个 UIView Controller。
它实现UITableViewDataSource
和UITableViewDelegate
协议,并有一个tableView
属性/出口(这是他唯一的.view)。
一个 UITableView 是一个UIView。
要让 aUIViewController
为您做几乎所有事情UITableViewController
,您必须实现这两个协议,将 a 拖到UITableView
您的UIViewController
中,为其创建一个出口并将您的设置UIViewController
为delegate
和dataSource
您的tableView
出口
您可以通过单击 StoryBoard for iOS6+ 中的复选标记来将 a 添加UIRefreshControl
到 a ,您必须在 a内部编写更多行来执行此操作UITableViewControllers
tableView
UITableView
UITableViewController
UITableViewController
是一个UIViewController
已经实现的UITableViewDelegate, UITableViewDataSource
协议,因此当你用它继承你的类时,你不需要ViewController
再次实现它们。就像是:
NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
为了更清楚,UITableViewDelegate, UITableViewDataSource
是protocols
,UITableViewController
而是ViewController
。
@interface ShareViewController : UITableViewController
上面的线意味着ShareViewController
继承自UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
上一行表示ShareViewController
继承自UIViewController
并实现了UITableViewDataSource, UITableViewDelegate
代表
如果您检查UITableViewController的参考资料,您会发现它符合UITableViewDataSource
但UITableViewDelegate
仅仅符合相同的协议并不能使类相等。UITableViewController 是一个适合与UITableView
s 一起使用的类,其中UIViewController
可以与 any 一起使用UIView
。