Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自调整单元格大小使UITableView跳转_Ios_Objective C_Uitableview_Reloaddata - Fatal编程技术网

Ios 自调整单元格大小使UITableView跳转

Ios 自调整单元格大小使UITableView跳转,ios,objective-c,uitableview,reloaddata,Ios,Objective C,Uitableview,Reloaddata,我有一个UITableView,每个单元格有一个图像和两个标签,如第一张图片所示 因此,我尝试使用自调整大小的电池,除了两件事外,其他一切都很好: 1) 第一个和第二个单元格不能正确显示内容,但在我向下滚动并返回到它们之后,一切都正常。我尝试在ViewDidDisplay中使用[tableview reloadData],但没有帮助。开始注意标签,它们不合适。你可以在这个视频上看 查看第一个单元格上的标签 2) 这很难。我滚动表格,一切都很好,但问题发生了,当我选择行时。它将我推到详细视图,但

我有一个UITableView,每个单元格有一个图像和两个标签,如第一张图片所示

因此,我尝试使用自调整大小的电池,除了两件事外,其他一切都很好:

1) 第一个和第二个单元格不能正确显示内容,但在我向下滚动并返回到它们之后,一切都正常。我尝试在ViewDidDisplay中使用[tableview reloadData],但没有帮助。开始注意标签,它们不合适。你可以在这个视频上看

查看第一个单元格上的标签

2) 这很难。我滚动表格,一切都很好,但问题发生了,当我选择行时。它将我推到详细视图,但当我按“后退”并返回到主视图时,tableview会跳转,因此我不会返回到选定的行,而且如果我滚动表格,它也不会平滑滚动,而是跳转。下面是两个视频的链接,第一个显示如果我不转到详细视图,滚动是平滑的,第二个显示跳跃问题


它绝对可以与自动调整大小的单元格相连接,因为如果我不使用它,就不会出现任何问题。

不幸的是,我认为您提出的两个问题都是IOS错误

问题(1)

这建议了一个简单的解决方法

首次显示表格视图时,您可能会发现某些单元格的大小不正确。但当您滚动表格视图时,新单元格将以正确的行高显示。要解决此问题,可以在视图出现后强制重新加载:

只需将以下内容添加到您的
viewdide
方法中。我已经测试过了,效果很好

[self.tableView reloadData];
问题(2)

第二个问题与以下问题重复:

这个问题的作者自己提出了一个变通办法,这似乎还可以。然而,我还没有试过这个

好的,我解决了这个问题,将我的单元格高度缓存在sizeThatFits中,并返回代理中估计的单元格高度值。工作得很漂亮


请随意转到该问题,寻求其他建议的解决方案

好的,我解决了这两个问题

问题1

我添加了这两行

[cell.contentView setNeedsLayout];
[需要cell.contentView布局];
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(nsindepath*)indepath
返回单元格之前

问题2

解决办法似乎很简单。我只需要实现
viewwilldisapear
并在其中重新加载数据,因此代码如下所示

-(void)视图将消失:(BOOL)动画;{
[超级视图将消失:动画];
[self.tableView重载数据];
}
我的解决方案很简单,如果对某人不起作用,我在这里找到了一些有用的链接。
1)

2)

您是否对单元格中的标签和图像视图使用了约束?是的,图像有3个约束:1)前导空间2)顶部空间3)尾随空间;3第一个标签的约束:1)前导空间2)顶部空间3)尾随空间;第二个标签的4个约束1)前导空间2)顶部空间3)尾随空间4)底部空间应用约束时标签的边界是什么?宽度是290,高度是21谢谢你的回答。1) 正如我之前所说的,这个重新加载数据的修复对我来说不起作用2)我不明白他到底是怎么做到的,而且他也没有使用约束,但我会问him@igrrik,也许你可以从这里下载这个项目,并与你的项目进行比较,看看有什么不同?此示例代码由此提供,
[self.tableView reloadData]
在那里工作。或者,如果你愿意的话,你可以发布一些相关的代码,让我们看看它们?可能是因为其他原因。我们已经取得了一些进展!第一个问题已经解决了。但第二个仍然在这里。实际上,这篇博文只提供了两行代码:self.tableView.estimatedRowHeight=239.0;self.tableView.rowHeight=UITableViewAutomaticDimension;其他一切都是有限制的。我的项目和他们的项目的区别在于,我的单元格中有一个imageview和一个detailview。@伊格里克,你是如何解决第一个问题的?你是否通过重新加载表视图解决了这个问题?@igrrik,似乎很多人都对这个IOS错误有意见。还可以看看这个:。在这一点上,我建议等待苹果修复他们的bug。如果这种跳转对您来说是一个关键问题,我还建议您使用一些传统的方法来制作可调整大小的单元格,正如本文所讨论的那样