Jer*_*emy 2 iphone uitableview
我需要在同一个NIB中使用两个UITableView.我使用过IB并用两个表创建了一个视图.
我的头文件包含ViewController和两个类,每个表一个(见下文).在IB中,我可以将每个表的委托和数据源连接到FileOwner,但我无法弄清楚如何创建IBOutlet连接.我收到此消息: - [News tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x15d3c0 2011-12-11 07:20:27.480 myCity1 [659:707]由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因: ' - [new tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x15d3c0'
这是头文件:
@interface News : UIViewController {
}
@end
@interface TownNews : UITableViewController {
UITableView *townNewsTable;
}
@property (nonatomic, retain) IBOutlet UITableView *townNewsTable;
@end
@interface GeneralNews : UITableViewController {
UITableView *generalNewsTable;
}
@property (nonatomic, retain) IBOutlet UITableView *generalNewsTable;
@end
Run Code Online (Sandbox Code Playgroud)
我在我的一个项目中处理这个问题(你可以看一下:appstore中名为IJCAI11的免费应用程序;标签'People'(索引是用单独的tableView完成的)); 就我在上面的代码中所看到的,你让事情变得太复杂了.我将描述我是如何做到的,而不是说你不应该做什么:)
我只有一个类,让我们说YaddaYaddaViewController.
@interface YaddaYaddaViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
UITableView *tableView1;
UITableView *tableView2;
}
@property (nonatomic, retain) IBOutlet UITableView * tableView1;
@property (nonatomic, retain) IBOutlet UITableView * tableView2;
@end
Run Code Online (Sandbox Code Playgroud)
请注意,viewController派生自UIViewController,而不是UITableViewController(类UITableViewController的目标是能够在2分钟内实现简单的tableView,对于更多自定义内容,您应该始终使用UIViewController.要了解更多相关信息,请查看UITableViewController类的文档).
在"文件所有者"的IB中,我只需设置YaddaYaddaViewController; 我将tableView1和tableView2出口链接到View中的正确表; 我将委托和数据源链接到tableView1/2,所以我有'multiple'委托和数据源.
最后,在代码中,对于所有委托方法(例如tableView:cellForRowAtIndexPath :)我只关注tableView值,其委托事件导致调用此方法,如:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.tableView1) {
// some code here
} else {
// alternative code here
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
914 次 |
| 最近记录: |