cellForRowAtIndexPath被调用两次

时间:2014-08-15 19:48:18

标签: ios uitableview ios7

我正在显示通过故事板初始化的动态表视图。 没什么好看的,只是用文本标签初始化3个单元格。

以下是实际发生的事情:

2014-08-15 12:39:19.909 PopTestAnimation[31825:60b] numberOfSectionsInTableView
2014-08-15 12:39:19.926 PopTestAnimation[31825:60b] numberOfSectionsInTableView
2014-08-15 12:39:19.927 PopTestAnimation[31825:60b] numberOfRowsInSection
2014-08-15 12:39:19.929 PopTestAnimation[31825:60b] cellForRowAtIndexPath: 0
2014-08-15 12:39:19.943 PopTestAnimation[31825:60b] Displaying row: 0
2014-08-15 12:39:19.943 PopTestAnimation[31825:60b] cellForRowAtIndexPath: 1
2014-08-15 12:39:19.945 PopTestAnimation[31825:60b] Displaying row: 1
2014-08-15 12:39:19.945 PopTestAnimation[31825:60b] cellForRowAtIndexPath: 2
2014-08-15 12:39:19.946 PopTestAnimation[31825:60b] Displaying row: 2
2014-08-15 12:39:19.947 PopTestAnimation[31825:60b] numberOfSectionsInTableView
2014-08-15 12:39:19.947 PopTestAnimation[31825:60b] numberOfRowsInSection
2014-08-15 12:39:19.948 PopTestAnimation[31825:60b] cellForRowAtIndexPath: 0
2014-08-15 12:39:19.949 PopTestAnimation[31825:60b] Displaying row: 0
2014-08-15 12:39:19.949 PopTestAnimation[31825:60b] cellForRowAtIndexPath: 1
2014-08-15 12:39:19.950 PopTestAnimation[31825:60b] Displaying row: 1
2014-08-15 12:39:19.951 PopTestAnimation[31825:60b] cellForRowAtIndexPath: 2
2014-08-15 12:39:19.952 PopTestAnimation[31825:60b] Displaying row: 2

似乎每个单元格由于某种原因被初始化了两次。有什么想法吗?

以下是code

1 个答案:

答案 0 :(得分:3)

我刚检查了故事板文件。在 TraffleViewController (UITableViewController的子类)的故事板中,你有一个 UITableViewWrapper 和另一个 UITableView

应该只有一个 UITableViewWrapper ,其中没有其他 UITableView 。由于UITableViewWrapper中有一个UITableView,因此有两次调用:

cellForRowAtIndexPath:

如果你进行调试并在里面打印UITableView的实例:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

你会发现两个独立的UITableView实例 请按照以下步骤解决。

  

1.删除名为" Table View"从故事板。

     

2.在TraffleViewController中拖出一个UITableView

     

3.将UITableView的数据源和委托设置为TraffleViewController。