xib中的UITableView不调用cellForRowAtIndex

时间:2014-02-20 22:45:08

标签: ios objective-c uitableview

我有一个XIB,里面有很多视图(iPad)。其中一个视图是UITableView。代表是通过IB设置的。当您运行应用程序时cellForRowAtIndex未被调用。事实上,在此文件中,也没有numberOfRowsInSectionnumberOfSections方法。只有didSelectRowAtIndexPath方法。

所以我写了一个cellForRowAtIndex并手动设置self.table.delegate = self

如果单击一个单元格,则执行didSelectRowAtIndexPath

老实说我不知所措?这怎么可能发生?

4 个答案:

答案 0 :(得分:5)

添加:

self.table.dataSource = self;

cellForRowAtIndex是一种数据源协议方法,因此您必须将数据源设置为self,以便控制器响应数据源协议。


答案 1 :(得分:1)

如果此控制器不是UITableViewController,请不要忘记将以下内容添加到.h文件中:

@interface myViewController: UIViewController <UITableViewDelegate, UITableViewDataSource> {}

答案 2 :(得分:0)

我不确定是什么导致了这个问题,但是一个简单的解决方法就是在你的-(void)viewDidLoad方法中你可以调用[self.table reloadData]强制它手动调用所有函数

我遇到的其他一些问题是你说“numberOfRowsInSection或numberOfSections未实现”......这些方法是表视图所必需的,oyu必须确保实现它们。这很可能就是问题

答案 3 :(得分:0)

在.h中,您需要添加Datasource和Delegate声明

@interface HDMainViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

在您创建tableview的.m文件中,您需要设置

tableview.delegate = self;
tableview.dataSource = self;

现在您的dataSource和Delegate方法应该可以正常工作