如何组合多个线程的视图转换?

时间:2014-01-10 09:59:21

标签: objective-c multithreading

我有一个带2个线程的Obj-C iPhone应用程序。第一个线程当然包含GUI。第二个线程做了很多工作,并在某些时候在主线程上运行一个方法,显示一个模态UIViewController。我希望这个UIVC看起来很动画,但是那时GUI可能处于解散UIVC的状态(因为用户可能正在浏览应用程序),在这种情况下我得到了一个

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

处理这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

动画全部在主线程上运行您可以尝试延迟当前动画或将推动动画设置为NO

in

-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];
    });