gpt4 book ai didi

ios - scrollViewDidScroll 在设置表偏移后被调用 "twice"

转载 作者:行者123 更新时间:2023-12-01 18:42:14 27 4
gpt4 key购买 nike

大家好(和圣诞快乐)

希望有人能回答我的问题,那将是一个美好的圣诞节
礼物。

我的 UIViewController 一个表,在表部分区域中有一个分段控件。看起来像这样
enter image description here

每次用户单击分段控件时,我都会重新加载表格数据,并希望表格显示正确的位置(不完全是行位置,所以我使用表格内容偏移量)。这是我的代码:

- (void)clickSegmentedCenter code hereontrol:(int)index {
self.firstTableOffset = 72;
self.secondTableOffset = 250;
self.thirdTableOffset = 600;

CGFloat offset_y = 0;
switch (index) {
case 0:
offset_y = self.firstTableOffset;
break;

case 1:
offset_y = self.secondTableOffset;
break;

case 2:
offset_y = self.thirdTableOffset;
break;
}

NSLog(@"[Debug] offset y is %f", offset_y);

[self.tableView reloadData];
self.tableView.contentOffset = CGPointMake(0, offset_y);
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

CGPoint offset = scrollView.contentOffset;
NSLog(@"[XXX] offset y is %f", offset.y);
}

我遇到的问题是,在表重新加载数据后,似乎我不应该立即调用 self.tableView.contentOffset。我的 table 没有滚动到我设置的位置。我发现 scrollViewDidScroll 被调用了两次!!!日志消息如下所示:

enter image description here

那么有谁知道重新加载表格数据并将表格滚动到特定位置的正确方法是什么?提前致谢。

更新:事实证明我的代码是正确的。原因在我的viewDidLoad中,我设置了
self.tableView.estimatedRowHeight = 230.0;

由于某种原因,此设置会导致问题。在我评论这一行之后..行为是正确的。最初我设置表格的estimatedRowHeight 是因为我的单元格的高度是动态的。现在这个问题解决了。感谢这里的人的建议。圣诞节快乐 !!!

最佳答案

能否请您更新 scrollViewDidScroll如下所示并尝试:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

dispatch_async(dispatch_get_main_queue(), ^(void){
CGPoint offset = scrollView.contentOffset;
NSLog(@"[XXX] offset y is %f", offset.y);
});
}

关于ios - scrollViewDidScroll 在设置表偏移后被调用 "twice",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318864/

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