如何首先解雇模态视图控制器?

时间:2011-08-08 16:13:28

标签: iphone objective-c

我有这段代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    [picker dismissModalViewControllerAnimated:YES];

...

}

不幸的是,在解雇模态视图控制器之前,它会运行剩下的代码(可能需要几秒钟)。我怎样才能让它首先解除它,然后运行剩下的代码?

2 个答案:

答案 0 :(得分:2)

在返回主运行循环(即函数返回)之前,它不会关闭模态视图控制器或执行任何其他UI更新。

如果您的任务需要花费大量时间才能完成,则应该在后台线程而不是主线程上执行。通常的做法是使用performSelectorInBackground:withObject:;但请记住,任何UI更新(例如操作完成时)必须在主线程上完成,因此您的后台方法可能必须使用performSelectorOnMainThread:withObject:waitUntilDone:

如果您更喜欢积木,则可以改为使用dispatch_async

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
    // background operation
});

如果你有许多后台操作,你也可以查看NSOperationQueue进行后台操作。

答案 1 :(得分:0)

如果您不需要动画,请尝试:

[picker dismissModalViewControllerAnimated:NO];