gpt4 book ai didi

objective-c - 让微调器在加载 View 后立即开始

转载 作者:行者123 更新时间:2023-11-28 20:40:31 25 4
gpt4 key购买 nike

在我的应用程序中,我在其中一个 View Controller 中有一个表。当其中一行被点击时,它会将用户带到不同的 View /viewController 并且它可以工作。在这个新的 viewController 中,正在后台从 php 脚本解析数据。

这大约需要 7-10 秒,在这段时间内,我希望用户立即看到一个显示“正在加载...”的微调器。我自己实现了这个,但是微调器直到 4-5 秒才开始加载。在此期间,屏幕完全卡住,我无法点击任何东西或返回,直到显示微调器/数据。

我试图将以下代码放在实际获取数据的方法中,在 viewDidAppear 和 ViewDidLoad 方法中(不是同时),但同样的事情发生了。

如果有人知道如何解决这个问题,我们将不胜感激。

谢谢

   [web loadRequest: [NSURLRequest requestWithURL: [NSURL   URLWithString:@"http://xxx.xx.xx.xxx/stuff/xxx.php"]]];

[web addSubview:spinner];

timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector: @selector(tick) userInfo:nil repeats:YES];


load_message = [[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil];

spinner= [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(135.0, 60.0);
[load_message addSubview:spinner];




-(void) tick
{

if(!web.loading)
{
[spinner stopAnimating];
[load_message dismissWithClickedButtonIndex:0 animated:TRUE];



}

else {

[load_message show];
[spinner startAnimating];
}



}

最佳答案

你可以启动你的微调器,然后在延迟后开始你的漫长过程:

- (void)someMethod
{
[spinner startAnimating];
[self performSelector@selector(doLongProcess:) withObject:someObject afterDelay:0.0];
}
- (void)doLongProcess:(id)someObject
{
//Some really long process
}

您的微调器很可能被阻塞,因为在同一个线程上可能正在发生一个很长的过程。

关于objective-c - 让微调器在加载 View 后立即开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8737527/

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