我有一个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不会在这里被解雇的原因吗?谢谢!
答案 0 :(得分:0)
您要返回的行数为0.
答案 1 :(得分:0)
也许您已经将tableview的委托/数据源设置为storyboard / xib中的控制器,但是您还没有连接控制器的“faveTableView”tableview IBOutlet
...如果del / datasource已设置,然后它将成功从控制器获取数据,但如果未设置IBOutlet
,self.faveTableView
将保持为零,因此[self.faveTableView reloadData]
将不会执行任何操作。在viewDidLoad
中放置一个断点,检查self.faveTableView
是否为零......