Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(iphone)当用户界面更新频繁时,如何显示活动指示器?_Iphone_Viewdidload_Viewdidappear - Fatal编程技术网

(iphone)当用户界面更新频繁时,如何显示活动指示器?

(iphone)当用户界面更新频繁时,如何显示活动指示器?,iphone,viewdidload,viewdidappear,Iphone,Viewdidload,Viewdidappear,我试图在频繁的UI更新时显示活动指示器 我最初失败的尝试是 在视图1中显示活动指示器 pushViewController创建此viewController的视图需要很长时间 当view1的VIEWDID消失时当pushViewController的push动画 发生,隐藏活动指示器 问题是,尽管我在推送viewController之前调用了ShowActivityIndicator,但由于在创建被推送的viewController视图时出现了繁重的UI,所以ActivityIndicator并

我试图在频繁的UI更新时显示活动指示器

我最初失败的尝试是

在视图1中显示活动指示器 pushViewController创建此viewController的视图需要很长时间 当view1的VIEWDID消失时当pushViewController的push动画 发生,隐藏活动指示器 问题是,尽管我在推送viewController之前调用了ShowActivityIndicator,但由于在创建被推送的viewController视图时出现了繁重的UI,所以ActivityIndicator并没有显示

我像贝娄一样改变了策略,它奏效了,我不明白为什么

PushView控制器 在viewController的viewDidLoad处显示活动指示器 ViewDid上的重UI加载是否显示和隐藏指示器 我的印象是,第一个方法中没有显示该指示器的原因是因为UI过程繁重。 请参阅链接中的讨论。

如果队列上过多的UI更新导致延迟的UI更新指示器未显示,为什么第二种方法会有所不同

我知道只有在创建视图时才会调用viewDidLoad。 当视图实际显示在屏幕上时,会调用ViewDidAspect。因此可以多次调用

但是有没有一个根本性的区别可以解释为什么在我的情况下使用ViewDidAspect的第二种方法有效

除了所谓的主线程,还有UI更新线程吗? 或者主线程是UI更新线程


谢谢

首先,我想确保您正在主线程上更新UIKit UI。这是必须的,在使用UIKit时不应该指定线程,除非您说使用主线程,但我认为这是多余的


我会在视图中启动活动指示器,并显示。然后在viewDidLoad中加载所有其他内容。

谢谢您的建议,是的,我正在主线程中进行UI更新。我以为viewWillAppear会因为一个视图外观而多次被调用。VIEWDID只调用一次。为什么ViewWill看起来是更好的选择?我是否应该维护一个bool变量以不加载多个指示器视图,因为viewwillbeen会被多次调用?使用if语句查看活动指示器是否正在设置动画。如果不是,则设置动画。您的活动指示器应该已经创建好了,如果它在nib中的话,它会非常有用。只要在调用ViewWillDisplay或ViewDidDisplay时将其设置为visible and animating(可见和动画),如果这更适合您的应用程序,并且当UI完全加载时,将活动指示器设置为停止动画和不可见。