たとえばUITableViewDataSource、UITableViewDelegateこれらUITableViewController2 つのコード行に違いはありますか?
@interface ShareViewController : UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
たとえばUITableViewDataSource、UITableViewDelegateこれらUITableViewController2 つのコード行に違いはありますか?
@interface ShareViewController : UITableViewController
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
この 2 行のコードには大きな違いがあります。これ
@interface ShareViewController : UITableViewController
は、ShareViewController が から継承することを意味するUITableViewControllerため、たとえばUITableViewメイン ビューとして提供されます。これ
@interface ShareViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>
は、ShareViewController が従来の UIViewController (から継承UIViewController) であり、テーブル ビューを管理するためのプロトコルを実装するだけであることを意味します。
UITableViewController最も重要なのは UIView Controllerです。
プロトコルを実装UITableViewDataSourceし、プロパティ/アウトレット (彼の唯一の .view) を備えています。UITableViewDelegatetableView
UITableView はUIViewです。
に がUIViewController行うほぼすべてのことを実行させるには、2 つのプロトコルをUITableViewController実装する必要がありUITableViewます。UIViewControllerUIViewControllerdelegatedataSourcetableView
iOS6+ の StoryBoard でチェックマークをクリックするだけでaUIRefreshControlに a を追加できます。UITableViewControllers tableViewUITableViewUITableViewController
UITableViewControllerの参照を確認するUITableViewDataSourceと、それが準拠していることがわかりますがUITableViewDelegate、単に同じプロトコルに準拠しているだけではクラスが等しくなりません。UITableViewController は、 any で使用できるUITableViews での使用に適したクラスです。UIViewControllerUIView
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