dismissViewControllerAnimated 在块内不起作用
dismissViewControllerAnimated does not work within a block
我尝试在 UIAlertController
显示后关闭 UIViewController
。
这是我的代码:
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
message:msg
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Accept"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
[self dismissViewControllerAnimated:YES completion:nil];
}];
[alertController addAction:okAction];
[self presentViewController:alertController animated:YES completion:^{}];
然而,self
永远不会被解雇。任何人都知道如何解决这个问题?
更新
如果我在块外设置 [self dismissViewControllerAnimated:YES completion:nil];
,它会起作用。
[self dismissViewControllerAnimated:YES completion:nil]
将关闭 当前显示的视图 (即 "self")正在显示的所有视图控制器。您想要做的是 运行 在 "self" 的 呈现 视图控制器上使用相同的方法。即
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
您是否检查过在哪个线程上调用该块?如果它不是线程 1,那么它不会正确关闭您的视图,因为 UI 操作只能在线程 1 上完成。尝试创建一个关闭方法,然后在主线程上调用它:
...handler {
[self performSelectorOnMainThread:@selector(dismissModalView) withObject:nil waitUntilDone:NO];
}];
-(void)dismissModalView {
[self dismissViewControllerAnimated:YES completion:nil];
}
以防有人遇到同样的问题。我推了 UIViewController
,我没有用 presentViewController:animated:completion:
显示它。这就是为什么应该使用 [self.navigationController popViewControllerAnimated:YES];
的原因。
奇怪的是 [self dismissViewControllerAnimated:YES completion:nil];
在街区外工作而没有在街区内工作,对此我没有任何解释...
只需使用[super.navigationController popViewControllerAnimated:YES];
我尝试在 UIAlertController
显示后关闭 UIViewController
。
这是我的代码:
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
message:msg
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Accept"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
[self dismissViewControllerAnimated:YES completion:nil];
}];
[alertController addAction:okAction];
[self presentViewController:alertController animated:YES completion:^{}];
然而,self
永远不会被解雇。任何人都知道如何解决这个问题?
更新
如果我在块外设置 [self dismissViewControllerAnimated:YES completion:nil];
,它会起作用。
[self dismissViewControllerAnimated:YES completion:nil]
将关闭 当前显示的视图 (即 "self")正在显示的所有视图控制器。您想要做的是 运行 在 "self" 的 呈现 视图控制器上使用相同的方法。即
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
您是否检查过在哪个线程上调用该块?如果它不是线程 1,那么它不会正确关闭您的视图,因为 UI 操作只能在线程 1 上完成。尝试创建一个关闭方法,然后在主线程上调用它:
...handler {
[self performSelectorOnMainThread:@selector(dismissModalView) withObject:nil waitUntilDone:NO];
}];
-(void)dismissModalView {
[self dismissViewControllerAnimated:YES completion:nil];
}
以防有人遇到同样的问题。我推了 UIViewController
,我没有用 presentViewController:animated:completion:
显示它。这就是为什么应该使用 [self.navigationController popViewControllerAnimated:YES];
的原因。
奇怪的是 [self dismissViewControllerAnimated:YES completion:nil];
在街区外工作而没有在街区内工作,对此我没有任何解释...
只需使用[super.navigationController popViewControllerAnimated:YES];