覆盖Objective-C中的UITableViewController的cellForRowAtIndexPath

时间:2011-07-06 18:07:59

标签: objective-c override uitableview abstract

我有一个视图控制器MainVC,它包含一个视图,我想在各个表之间切换。我有一个名为InfoVC的“抽象”类,它扩展了UITableViewController并包含几个必须重写的方法,否则它们会引发异常。最后,我有几个扩展InfoVC并在InfoVC中实现“抽象”方法的类,以及覆盖tableView的numberOfRowsInSection和cellForRowAtIndexPath的方法。

这是我在MainVC中加载表的方法。在这种情况下,TemperatureInfoVC扩展InfoVC,self.subVC的类型为InfoVC,switchView是MainVC中的视图:

TemperatureInfoVC *sVC = [[TemperatureInfoVC alloc] initWithStyle:UITableViewStylePlain];
self.subVC = sVC;
[sVC release];
[switchView insertSubview:self.subVC.view atIndex:0];

我的问题是表总是加载空的。从设置断点,我可以看到正在调用TemperatureInfoVC的numberOfRowsInSection,但是没有调用TemperatureInfoVC或InfoVC的cellForRowAtIndexPath。但是,如果我将上面代码中的第一行更改为:

InfoVC *sVC = [[InfoVC alloc] initWithStyle:UITableViewStylePlain];

然后正确调用InfoVC的numberOfRowsInSection和cellForRowAtIndexPath。有谁知道为什么没有调用TemperatureInfoVC的cellForRowAtIndexPath?

2 个答案:

答案 0 :(得分:0)

我假设您没有设置委托(UITableViewDelegate)和数据源(UITableViewDatasource)。通常委托和数据源实现都在自定义UITableViewController中,所以(如果没有在IB中连接),需要在某处:

tableView.delegate = self;
tableView.dataSource = self;

通常位于-loadView-viewDidLoad:

答案 1 :(得分:0)

哎呀,弄清楚了。我正在从MainVC中设置的TemperatureInfoVC中的NSMutableArray加载数据,但是我在初始化subVC之前设置了数据,所以当然表中没有数据。