gpt4 book ai didi

iphone - UITableView 不会重新加载 contentSize

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:57 28 4
gpt4 key购买 nike

我有一个 UITableView,它在 UITableView 第一次重新加载后添加了一些数据,但是我无法向下滚动到新数据,如果我滚动我看到了新数据,但它会自动向后滚动,是的,我重新加载了我的 UITableView,所以我检查了我的 UITableView contentSize,它在重新加载后不会改变,但是在我转到另一个 View (UINavigationController)并弹出后,UITableView contentSize 确实发生了变化并且它有效!我该如何解决这个问题?

谢谢!

最佳答案

我遇到了类似的问题并使用与 Daan 相同的技术解决了它(据我所知)。

在我的例子中,我使用了一个静态的 UITableView,它最初隐藏了一些行和部分(通过从 numberOfSectionsInTableView:tableView:numberOfRowsInSection: 设置适当的返回值).我将一个 VC 推送到导航堆栈以收集额外的数据,然后我将使用这些数据来填充隐藏的 tableview 部分,调用 tableview 上的 reloadData 来刷新它。

这在 iOS7 中运行良好,但在 iOS6 中,tableview 的 contentSize.height 从未从其初始值(218 pts)更改为从添加新部分派(dispatch)生的更高值(504 pts) .因此,您无法滚动到表格 View 底部的内容。尝试强制设置 contentSize 无效,因为它立即设置回 218。

更改 tableView 的 contentOffset 允许我滚动到内容的底部,但如果您点击最后一个单元格中的 UITextField,它会在显示键盘时迅速离开屏幕。

我终于能够想出一个在 iOS6 和 iOS7 中都能正常工作的解决方案。我使用了旧的 beginUpdates/insert or delete rows and sections/endUpdates UITableView 的方法,如下:

// change the tableView's data source to reflect insertions/deletions
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:@[ [NSIndexPath indexPathForRow:1 inSection:0] ] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView insertSections:[NSIndexSet indexSetWithIndexesInRange:NSRangeFromString(@"1,3")] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];

如您所见,在这种特殊情况下,我不得不从第一个(也是唯一一个)部分中删除一行,并将三个部分添加到 TableView 的末尾。

关于iphone - UITableView 不会重新加载 contentSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15443388/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com