iPhone:如何在一个NIB中控制两个表

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]由于未

我需要在同一个笔尖中有两个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'

下面是头文件:

@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
        }