gpt4 book ai didi

ios - 进度 HUD 显示太晚

转载 作者:行者123 更新时间:2023-11-29 01:46:35 28 4
gpt4 key购买 nike

我目前正在通过评估 prepareForSegue 中的 segue.identifier 动态加载新 View :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString: @"DetailViewSegue"]) {
DetailViewController *detailController = segue.destinationViewController;
// ... do something with the controller
}
}

其中一些 View 需要一些时间,因为从 Internet 收集数据并将其显示在表格方案中需要相当长的时间。因此,我想显示一个进度 HUD,如 KVNProgress,但现在的主要问题是进度条显示得太晚,就在新 View 准备就绪之前。据我所知,主要问题是 prepareForSegue 方法,因此 KVNProgress 在加载所有数据之前立即被调用,但加载新 View 似乎是首选。

我尝试的另一件事是在 IBActiondidSelectRowAtIndexPath 中调用 KVNProgress 并在其中调用 performSegueWithIdentifier他自己的线程。然而,这是(正如控制台输出所暗示的)不鼓励的,并且也没有真正起作用。

谢谢!

编辑:有多次尝试实现这一目标,目前我正在尝试这样做:

(IBAction)buttonPushed:(id)sender {
[KVNProgress showWithStatus:@"Loading"];

[self performSegueWithIdentifier:@"DetailViewSegue" sender:sender];
}

正如我所描述的,我认为这是我最早可以在加载新操作之前显示 ProgressHUD。然而,当前 View 似乎在加载新 View 时被阻止,因此未显示 hud。

最佳答案

有两种解决方案。

当用户点击“加载数据”按钮时,

  • 您显示 HUD(并停留在当前屏幕上)
  • 从互联网加载数据(通常在后台线程上)
  • 完成后,您调用 performSegueWithIdentifier 以移动到 DetailView 屏幕

或者,您可能更愿意这样做:

  • 当用户点击按钮
  • 您移动到新的 DetailView 屏幕
  • 在 DetailViewController.m 中,显示 HUD 并调用加载互联网数据的后台线程

两者各有利弊(您可能会发现后者更易于维护,因为其他屏幕调用此 DetailView 屏幕并且还需要加载互联网数据来填充此屏幕)。

关键是决定你想用哪种方式来实现它,然后让那个特定的 ViewController 来完成这两个部分,处理 HUD 加载互联网数据。

关于ios - 进度 HUD 显示太晚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31859989/

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