Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
Ios 这是延迟解除ModalViewController的一种方式吗?_Ios - Fatal编程技术网

Ios 这是延迟解除ModalViewController的一种方式吗?

Ios 这是延迟解除ModalViewController的一种方式吗?,ios,Ios,我想从一个完成块内弹出一个显示,但我还想从同一块内(但在弹出完成后)解除ModalViewController初始化。请注意,弹出窗口将在完成块执行完成后调度和运行,这意味着它永远不会发生,因为解雇是同步的 因此,一个快速解决方案是找到一种方法,在弹出窗口之后异步安排解雇。有链接方法吗?强制保持异步任务运行并等待它们的方法?使用-performSelector:withObject:afterDelay:。您需要将解雇包装在一个与-performSelector:…所需签名匹配的选择器中,因为解

我想从一个完成块内弹出一个显示,但我还想从同一块内(但在弹出完成后)解除ModalViewController初始化。请注意,弹出窗口将在完成块执行完成后调度和运行,这意味着它永远不会发生,因为解雇是同步的


因此,一个快速解决方案是找到一种方法,在弹出窗口之后异步安排解雇。有链接方法吗?强制保持异步任务运行并等待它们的方法?

使用
-performSelector:withObject:afterDelay:
。您需要将解雇包装在一个与
-performSelector:…
所需签名匹配的选择器中,因为
解雇ModalViewController初始化:
接受一个
BOOL

您可以改为使用dispatch\u,它将被动态解雇。检查以下简单示例代码:

int64_t delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [self dismissModalViewControllerAnimated:YES];
});

-performSelector:withObject:afterDelay:
是否不执行您需要的操作?您需要包装解雇,因为
dismissModalViewControllerAnimated:
需要
BOOL
,但它应该可以工作。回答这个问题,我会检查它作为解决方案!