未调用UITableViewController reloadData cellForRowAtIndexPath

时间:2015-02-25 08:45:27

标签: ios objective-c uitableview

从其他viewcontoller调用loadData方法,如:

TestTVC *testTVC = [[TestTVC alloc] init];
[testTVC loadData];

我将NSLog(@"testTVC Array section:%lu has %lu rows ")放在numberOfRowsInSection中,它返回结果。

但是在cellForRowAtIndexPath部分中,NSLog(@"cellForRowAtIndexPath")从未以某种方式打印过。

我确信我的委托和数据源设置正确。因为它适用于[self loadData]

我也尝试在主线程中运行它,它确实无法正常工作。

有谁知道吗?感谢。

已更新:我使用了[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationNone];而不是[self.tableView reloaddata],它可以正常运行,但它没有在表格单元格中重新加载UIImages。

NSLog(@"change cell image to testTVCImg1");
[testTVCCell.selectImgView setImage:[UIImage imageNamed:@"testTVCImg1"]];

打印了NSLog调试消息,但图像没有改变。

1 个答案:

答案 0 :(得分:0)

当一个单元格可见时,会调用

cellForRowAtIndexPath

当你这样做时

TestTVC *testTVC = [[TestTVC alloc] init];
[testTVC loadData];

testTVC不在视图层次结构及其tableview中。因此cellForRowAtIndexPath不会被调用。