我有这段代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
...
}
不幸的是,在解雇模态视图控制器之前,它会运行剩下的代码(可能需要几秒钟)。我怎样才能让它首先解除它,然后运行剩下的代码?
答案 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];