reloadData不会触发cellForRowAtIndexPath

时间:2013-12-11 20:23:57

标签: objective-c xcode5 uitableview

我有一个UIViewController,里面有一个UITableView。表格视图包含可以由应用程序的其他部分更改的收藏夹列表。我正在使用NSNotificationCenter来触发表视图的reloadData方法。表视图的出口声明如下:

@property (strong,nonatomic) IBOutlet UITableView *faveTableView;

并合成如下:

@synthesize faveTableView;

表视图的委托和数据源属性在视图控制器的viewDidLoad中设置如下:

[self.faveTableView setDataSource:self];
[self.faveTableView setDelegate:self];

NSNotificationCenter会触发以下方法:

-(void)reloadNotificationReceived{
    [self loadData];
    [self.faveTableView reloadData];
}

loadData更新数据源,该数据源是托管对象的NSMutableArray,并且正常工作。

当视图控制器加载时,将按原样触发cellForRowAtIndexPath。但是,当收到通知时,将触发reloadNotificationReceived并触发两个表视图委托方法(numberOfRowsInSection和numberOfSectionsInTableView)。但是,不会触发cellForRowAtIndexPath。 numberOfRowsInSection返回正确数量的项目。

有人能提出为什么cellForRowAtIndexPath不会在这里被解雇的原因吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您要返回的行数为0.

答案 1 :(得分:0)

也许您已经将tableview的委托/数据源设置为storyboard / xib中的控制器,但是您还没有连接控制器的“faveTableView”tableview IBOutlet ...如果del / datasource已设置,然后它将成功从控制器获取数据,但如果未设置IBOutletself.faveTableView将保持为零,因此[self.faveTableView reloadData]将不会执行任何操作。在viewDidLoad中放置一个断点,检查self.faveTableView是否为零......