其共同爲dataSource和 委託爲同一個對象,其 也常見於此對象爲 viewController。建立一個獨立的委託?
在我看到的所有信息/教程中,代表總是按照上述方式設置。如果我想創建自己的班級,那麼任何人都可以給我任何指示,告訴我如何做到這一點。該對象在哪裏被實例化,如何連接數據源和委託物品等。我正在使用UITableView來測試它。
其共同爲dataSource和 委託爲同一個對象,其 也常見於此對象爲 viewController。建立一個獨立的委託?
在我看到的所有信息/教程中,代表總是按照上述方式設置。如果我想創建自己的班級,那麼任何人都可以給我任何指示,告訴我如何做到這一點。該對象在哪裏被實例化,如何連接數據源和委託物品等。我正在使用UITableView來測試它。
有實際上是兩個這個問題的答案:
1)如果所有的輔導做這件事,爲什麼它的另一個?
2)UITableView委託只是符合UITableViewDelegate協議的任何對象。你會像這樣創建它。 。 。
- (void) viewDidLoad {
MyDelegate *delegate = [[[MyDelegate alloc] init] autorelease];
self.myTableView.delegate = delegate;
}
假設MyTableViewDelegate實現了UITableViewDelegate協議。
您應該只需要將UITableView的dataSource和委託屬性設置爲要執行這些角色的對象。確保你的新類實現的UITableViewDelegate和UITableViewDataSource協議在其頭文件:
@interface MyTableDelegate : NSObject <UITableViewDelegate, UITableViewDataSource>
你在哪裏分配這個對象是依賴於你的應用程序架構。對象可以包含在一個NIB文件,也可能在你分配表視圖控制器或控制器的viewDidLoad方法的同時,其分配你的表被分配:
// Create the delegate object and retain a reference to it
MyTableDelegate *tableDelegate = [[MyTableDelegate alloc] init];
self.tableDelegate = tableDelegate;
再比如說,如果你使用導航控制器,你可能會因此像這樣創建表並將其推入堆棧:
// Create the table view controller
MyTableViewController *viewController = [[MyTableViewController alloc] initWithNibName:@"MyTableView" bundle:nil];
// Set the delegate and data source
viewController.tableView.delegate = tableDelegate;
viewController.tableView.dataSource = tableDelegate;
// push the table view controller onto the naviagtion controller stack
[[self navigationController] pushViewController:viewController animated:YES];
// Clean up resources
[viewController release];
的MyTableDelegate類必須至少包含強制的方法:
tableView:cellForRowAtIndexPath
tableView.numberOfRowsInSection