我们可以使用UITableViewDataSource
,UITableViewDelegate
完全替换UITableViewController
,例如,这两个代码行之间是否存在差异?
@interface ShareViewController : UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
答案 0 :(得分:3)
这两行代码之间存在巨大差异。 此
@interface ShareViewController : UITableViewController
表示您的ShareViewController继承自UITableViewController
,因此它提供了一个UITableView
作为主视图。
此
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
表示您的ShareViewController是经典的UIViewController(继承自UIViewController
),只是实现管理表视图的协议。
答案 1 :(得分:1)
UITableViewController最重要的是UIView 控制器。
它实现了UITableViewDataSource
和UITableViewDelegate
协议,并且有tableView
属性/出口(这是他唯一的.view)。
UITableView是 UIView 。
要让UIViewController
几乎完成UITableViewController
为您所做的一切,您必须实施这两个协议,在UITableView
内拖动UIViewController
,创建一个它的出口并将UIViewController
设置为delegate
和dataSource
tableView
您只需点击StoryBoard for iOS6 +中的复选标记即可向UIRefreshControl
UITableViewControllers
添加tableView
,您必须在{{1}上写更多行才能执行此操作在UITableView
答案 2 :(得分:0)
@interface ShareViewController : UITableViewController
以上行表示ShareViewController
继承自UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
以上行表示ShareViewController
继承自UIViewController
&amp;实现UITableViewDataSource, UITableViewDelegate
代理
答案 3 :(得分:0)
如果您检查UITableViewController的引用,您将看到它符合UITableViewDataSource
和UITableViewDelegate
,但仅仅符合相同的协议并不会使类相等。 UITableViewController是一个适合与UITableView
一起使用的类,其中UIViewController
可以与任何UIView
一起使用。
答案 4 :(得分:0)
UITableViewController
是UIViewController
已经实施的UITableViewDelegate, UITableViewDataSource
协议,因此当您使用它继承您的课程时,您无需再次在ViewController
中实施这些协议。就像:
NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
为了更清楚,UITableViewDelegate, UITableViewDataSource
为protocols
,而UITableViewController
为ViewController
。