Objective c 如何组合来自多个线程的视图转换?
我有一个带有两个线程的Obj-C iPhone应用程序。当然,第一个线程包含GUI。第二个线程做了大量的工作,并且在某个时候在主线程上运行一个方法,该方法显示一个模态UIViewController。我希望此UIVC显示为动画,但此时GUI可能处于禁用UIVC的状态(因为用户可能只是在应用程序中导航),在这种情况下,我会得到一个Objective c 如何组合来自多个线程的视图转换?,objective-c,multithreading,Objective C,Multithreading,我有一个带有两个线程的Obj-C iPhone应用程序。当然,第一个线程包含GUI。第二个线程做了大量的工作,并且在某个时候在主线程上运行一个方法,该方法显示一个模态UIViewController。我希望此UIVC显示为动画,但此时GUI可能处于禁用UIVC的状态(因为用户可能只是在应用程序中导航),在这种情况下,我会得到一个 Uncaught exception: Attempting to begin a modal transition from <UINavigationCont
Uncaught exception: Attempting to begin a modal transition from <UINavigationController: 0x180dbb20> to <UINavigationController: 0x17f3c810> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed
Uncaught异常:正在进行转换时,试图从开始模式转换到。等待ViewDidDisplay/ViewDidEnglish以了解当前转换已完成
处理这个问题的正确方法是什么?动画都在主线程上运行 您可以尝试延迟当前动画或将推送动画设置为
NO
在
我不想在没有动画的情况下展示新的VC,因为尽管用户希望它在某个时刻出现,但它确实会干扰他对应用程序的使用,所以它应该看起来很优雅。你的解决方案很有效,谢谢。
-viewDidAppear {
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self present];
});