我有一个UITableView,每个单元格都有一个图像和两个标签,正如你在第一张图片上看到的那样
所以我尝试使用自我调整细胞,一切都很好,除了两件事:
1)第一个和第二个单元格没有正确显示内容,但在我向下滚动然后返回它们之后一切正常。我试图在viewDidAppear中使用[tableview reloadData],但它没有帮助。首先观看标签他们不适合。您可以在此视频https://www.youtube.com/watch?v=I9DGBl1c5vg
上观看查看第一个单元格上的标签。
2)这是一个艰难的。我滚动表格,一切都很棒,但是当我选择行时问题就出现了。它推动我进入细节视图,但当我按下"返回"并返回主视图,tableview跳转,所以我不回到选定的行,如果我滚动表,它不会滚动平滑,但跳转。以下是两个视频的链接,第一个显示滚动顺畅https://www.youtube.com/watch?v=9wAICcZwfO4如果我没有进入详细视图,第二个显示跳跃问题https://www.youtube.com/watch?v=fRcQ3Za1wDM。
它绝对确定与自我调整细胞有关,因为如果我不使用它,则不会发生这种问题。
答案 0 :(得分:7)
好的,我解决了这两个问题。
问题1
我添加了这两行
[cell.contentView setNeedsLayout];
[cell.contentView layoutIfNeeded];
在
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
之前的return cell
问题2
解决方案似乎非常简单。我只需要实现viewWillDissapear
并在其中重新加载数据,因此代码看起来像这样
- (void)viewWillDisappear:(BOOL)animated;{
[super viewWillDisappear:animated];
[self.tableView reloadData];
}
对我来说解决方案很简单,如果它对某人不起作用,我在这里找到了一些有用的链接
1)UITableView layout messing up on push segue and return. (iOS 8, Xcode beta 5, Swift)
2)http://useyourloaf.com/blog/2014/08/07/self-sizing-table-view-cells.html
答案 1 :(得分:4)
不幸的是,我相信你提出的两个问题都是IOS漏洞。
问题(1)
blog提出了一个简单的解决方法。
首次显示表格视图时,您可能会发现某些单元格的大小不正确。但是当您滚动表格视图时,新单元格将以正确的行高显示。要解决此问题,可以在视图出现后强制重新加载:
只需将以下内容添加到viewDidAppear
方法即可。我测试过它并且效果很好。
[self.tableView reloadData];
问题(2)
第二个问题与以下问题重复:
IOS 8 UITableView self-sizing cells jump/shift visually when a new view controller is pushed
问题的作者本人提出了一种解决方法,这似乎没问题。但是,我还没有试过这个。
好的,我通过在sizeThatFits中缓存我的单元格高度来解决它,并在委托中为估计的单元格高度返回该值。工作得很漂亮。
随意提出其他建议解决方案的问题。