iPhone:如何在一个NIB中控制两个表
我需要在同一个笔尖中有两个UITableView。我使用了IB并创建了一个包含两个表的视图 我的头文件包含ViewController和两个类,每个表一个(见下文)。在IB中,我可以将每个表的委托和数据源连接到FileOwner,但我无法确定如何创建IBOutlet连接。我收到以下消息:-[News tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x15d3c0 2011-12-11 07:20:27.480 myCity1[659:707]由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[News tableView:numberOfRowsInSection:::]:未识别的选择器发送到实例0x15d3c0' 下面是头文件:iPhone:如何在一个NIB中控制两个表,iphone,uitableview,Iphone,Uitableview,我需要在同一个笔尖中有两个UITableView。我使用了IB并创建了一个包含两个表的视图 我的头文件包含ViewController和两个类,每个表一个(见下文)。在IB中,我可以将每个表的委托和数据源连接到FileOwner,但我无法确定如何创建IBOutlet连接。我收到以下消息:-[News tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x15d3c0 2011-12-11 07:20:27.480 myCity1[659:707]由于未
@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
我在我的一个项目中处理过这件事(你可以看到: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
希望这有帮助 @makaron无论他说什么都是绝对正确的,除了 1) 如果您是UItableView的声明,并且希望使用库(而不是以编程方式)创建tableview,请将头文件更改为:-
@interface MyTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
IBOutlet UITableView *tableView1;
IBOutlet UITableView *tableView2;
}
@end
另外,如果不想在头文件中声明两个tableview,请从库中下拉两个tableview以查看,并为每个tableview设置标记,并与所有tableview代理中的标记帮助进行比较,如
NumberOfRowsInSection、NumberOfSection、CellForRowAtIndexPath、DidSelectRowAtIndexPath检查条件
if (tableView == self.tableView1) {
// code for tableView1
} else {
// code for tableView2
}
//I am assuming that tableView1 has tag set to be 1
if (tableView.tag==1) {
// code for tableView1
} else {
// code for tableView2
}
老实说,我看不出你回答的第一部分和我的有什么不同。关于第二个。。。是的,这也是一种方法,但我更喜欢呆在对象范围内(如果你愿意的话,使用OOP方法),而不是可能的标记。请注意,我没有说smth对Jeremy的代码有错,只是我怀疑他把事情复杂化了:)首先,当您通过Interface builder制作时(换句话说,如果您不是以编程方式制作tableView),那么您必须在头文件中提供IBOutlet。IBOutlet指接口生成器出口。第二件事是,当您只需要处理一个视图时,您没有将UITableView的属性设置为非原子并保留。。。感谢您从第一本HelloWorld苹果手册中获得的一些信息,我已经设置了IBOutlet,它是根据苹果文档设置的;老兄,我已经设置了非原子和保留:在同一个字符串,也是根据苹果文档。这更多的是对马卡隆答案的评论,而不是实际答案。谢谢马卡隆。这看起来容易多了。感激
//I am assuming that tableView1 has tag set to be 1
if (tableView.tag==1) {
// code for tableView1
} else {
// code for tableView2
}