在设备轮换期间不调用cellForRowAtIndexPath

时间:2012-10-30 14:41:18

标签: ios uitableview delegates

我有一个带有一些委托方法的UITableView。第一次加载时一切正常,但在旋转过程中我看到方法 cellForRowAtIndexPath 不记得。为什么? 我的委托方法是:

-(NSInteger)tableView:(UITableView *)tableView
  numberOfRowsInSection:(NSInteger)section{
       //.....
   }

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
     //......
 }
 - (UITableViewCell *)tableView:(UITableView *)aTableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath{

     //...This method is not called during the rotation of the device...

  }

  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
      //.......
  }

2 个答案:

答案 0 :(得分:1)

[tableView reloadData]方法中使用shouldAutorotateToInterfaceOrientation进行轮换后,您需要手动刷新表格数据。

答案 1 :(得分:0)

只有当单元格即将在屏幕上显示并且表格请求它时,才会调用该方法。一旦它在视图中,它将不再被调用,直到它滚出视图然后再返回。

您有3个处理轮换的选项:

  • 使用AutoLayout
  • 使用弹簧和弹簧支柱
  • 覆盖layoutSubviews(将在轮换时调用)

您选择的内容取决于您的单元格布局的复杂程度。此外,请确保表格在旋转时调整大小,否则单元格将不会看到大小更改。