【发布时间】:2013-12-30 00:29:13
【问题描述】:
我有一个 UIViewController,里面有一个 UITableView。表格视图包含可以由应用程序的其他部分更改的收藏夹列表。我正在使用 NSNotificationCenter 来触发表视图的 reloadData 方法。表格视图有一个出口声明如下:
@property (strong,nonatomic) IBOutlet UITableView *faveTableView;
合成如下:
@synthesize faveTableView;
表视图的delegate和datasource属性在视图控制器的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 没有在这里被解雇的原因?谢谢!
【问题讨论】:
-
也许
numberOfSectionsInTableView:返回一,而numberOfRowsInSection:返回零? -
您确定 numberOfRowsInSection 返回的计数大于 0 吗?
-
你返回的行数是多少?
-
如果在发送通知时您的表不可见,则运行时可能会完全跳过更新表。您的应用中会出现这种情况吗?
-
是的,numberOfRows 正在返回正确数量的项目。我将编辑原始帖子以反映这一点
标签: objective-c xcode5 uitableview