它对于dataSource和 委托成为同一个对象,它 这个对象也很常见 的viewController。
在我看过的所有信息/教程中,在线代表的设置总是如上所述。如果我想创建自己的类,那么任何人都可以给我任何关于如何做到这一点的指示。该对象在何处实例化,如何连接dataSource和委托项等。我正在使用UITableView来测试它。
答案 0 :(得分:0)
这个问题确实有两个答案:
1)如果所有教程都采用一种方式,为什么要另外呢?
2)UITableView委托只是符合UITableViewDelegate协议的任何对象。你会像这样创建它。 。
- (void) viewDidLoad {
MyDelegate *delegate = [[[MyDelegate alloc] init] autorelease];
self.myTableView.delegate = delegate;
}
假设MyTableViewDelegate实现了UITableViewDelegate协议。
答案 1 :(得分:0)
您应该只需要将UITableView的dataSource和delegate属性设置为要执行这些角色的对象。确保您的新类在其头文件中实现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