3

我们可以使用UITableViewDataSourceUITableViewDelegate完全替换UITableViewController,例如,这两个代码行之间有区别吗?

@interface ShareViewController : UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
4

5 回答 5

3

这两行代码之间有很大的不同。这个

@interface ShareViewController : UITableViewController

意味着您的 ShareViewController 继承自UITableViewController,因此它提供了例如一个UITableView作为主视图。这个

@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

意味着您的 ShareViewController 是一个经典的 UIViewController (继承自UIViewController),并简单地实现协议来管理表视图。

于 2013-02-22T09:53:44.937 回答
1

UITableViewController最重要的是一个 UIView Controller

它实现UITableViewDataSourceUITableViewDelegate协议,并有一个tableView属性/出口(这是他唯一的.view)。

一个 UITableView 是一个UIView


要让 aUIViewController为您做几乎所有事情UITableViewController,您必须实现这两个协议,将 a 拖到UITableView您的UIViewController中,为其创建一个出口并将您的设置UIViewControllerdelegatedataSource您的tableView出口

您可以通过单击 StoryBoard for iOS6+ 中的复选标记来将 a 添加UIRefreshControl到 a ,您必须在 a内部编写更多行来执行此操作UITableViewControllers tableViewUITableViewUITableViewController

于 2013-02-22T10:04:50.740 回答
0

UITableViewController是一个UIViewController已经实现的UITableViewDelegate, UITableViewDataSource协议,因此当你用它继承你的类时,你不需要ViewController再次实现它们。就像是:

NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

为了更清楚,UITableViewDelegate, UITableViewDataSourceprotocolsUITableViewController而是ViewController

于 2013-02-22T10:21:33.633 回答
0
@interface ShareViewController : UITableViewController

上面的线意味着ShareViewController继承自UITableViewController

@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

上一行表示ShareViewController继承自UIViewController并实现了UITableViewDataSource, UITableViewDelegate代表

于 2013-02-22T09:52:53.347 回答
0

如果您检查UITableViewController的参考资料,您会发现它符合UITableViewDataSourceUITableViewDelegate仅仅符合相同的协议并不能使类相等。UITableViewController 是一个适合与UITableViews 一起使用的类,其中UIViewController可以与 any 一起使用UIView

于 2013-02-22T09:55:50.363 回答