gpt4 book ai didi

iOS-viewDidAppear : delayed when showing a UITableView

转载 作者:行者123 更新时间:2023-11-29 11:21:49 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我有一个选项卡栏应用程序,在其中我为每个不同的选项卡使用一个导航 Controller ,每个导航 Controller 都有它自己的 View Controller 来显示一些内容。

当我触摸一个选项卡时,我希望该选项卡随 View 一起立即加载,并在它加载后 (viewDidAppear:) 我希望它在 viewDidAppear: 方法中下载一些数据。

为了测试此功能,我设置了以下方法。我正在使用 NSThread 来模拟执行一些冗长的操作,这些操作应该在加载 View 时在后台完成。然后我为 NSArray *test (nonatomic, retain) 分配一些测试数据并重新加载表。

我正在重新加载表格,因为在 viewDidLoad 方法中我将表格设置为仅包含一个空字符串(这是因为我读到表格是在调用 viewDidAppear: 之前设置的。

- (void)viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

DLog(@"viewDidAppear running");

[NSThread sleepForTimeInterval:10];

NSArray *array = [[NSArray alloc] initWithObjects:@"Test1", @"Test2", @"Test3", @"Test4", @"Test5", @"Test6", nil];
self.test = array;

[array release];

[table reloadData];
}

所以我预期的行为应该是,当触摸这个特定的选项卡时,它应该加载立即,然后在 10 秒后它应该填充来自 viewDidAppear: 方法的表数据。 的行为是,当触摸此选项卡时,它会等待 10 秒,然后显示填充了表数据的 View 。

最佳答案

调用 [NSThread sleepForTimeInterval:10]; 将阻止主线程进行任何更新,因此您看不到任何用户界面更改。如果你想像上面那样延迟重新加载表数据,请检查 NSObject performSelector:withObject:afterDelay: NSObject Class Reference

将 reloadData 和数组设置的代码放在一个方法中,然后通过 performSelector:withObject:afterDelay: 调用它

关于iOS-viewDidAppear : delayed when showing a UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677703/

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