Self Sizing Cells使UITableView跳跃

问题描述 投票:12回答:2

我有一个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

它绝对肯定与自我调整单元格有关,因为如果我不使用它,则不会发生这种问题。

ios objective-c uitableview reloaddata
2个回答
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


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中缓存我的单元格高度来解决它,并在委托中为估计的单元格高度返回该值。工作得很漂亮。

请随意针对其他提议的解决方案提出问题。

© www.soinside.com 2019 - 2024. All rights reserved.