UITableView reloadData似乎不会导致调用cellForRowAtIndexPath :.

Fri*_*les 7 cocoa-touch uitableview ios

我目前正在编写一个应用程序,使用故事板,UITableView在同一窗口中包含两个s.

运行应用程序时,第一个UITableView将填充许多"注册号".

当用户点击一个单元格时,第二个UITableView应该填充有关所选单元格的详细信息.

当点击第一个表中的数字时,我有一个驱动:

[mySecondTableView reloadData]
Run Code Online (Sandbox Code Playgroud)

它做的.我的印象是,在调用reloadData命令时,它应该同时调用:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
Run Code Online (Sandbox Code Playgroud)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

第一次开火,但第二次不开火.我有数据源和委托连接到自己.

我不确定我错过了什么.

这两种方法都是要解雇吗?

hat*_*nch 34

当这样的事情发生在我身上时,通常是因为我-reloadData在主线程外面打电话.

  • 几个小时以来,我不知所措.读完之后终于开始工作了.谢谢.小心像Bart说的完成块.确保使用object调用[tableView performSelectorOnMainThread:@selector(reloadData):nil waitUntilDone:NO] (2认同)

小智 19

在reloadData之后,试试这个:

NSIndexSet * sections = [NSIndexSet indexSetWithIndex:0];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationNone];
Run Code Online (Sandbox Code Playgroud)

我发现如果数据变化很微妙,表格视图似乎优化了需要刷新.