解雇由模态视图控制器呈现的UIAlertController

时间:2014-11-20 16:20:45

标签: ios objective-c uialertcontroller

我似乎遇到了类似于未解决的已发布问题中的问题:UIAlertController dismissing his presentingViewController

我在普通的UIViewController上呈现一个模态视图控制器。然后我在该模态视图控制器上弹出一个警报。当我推动" ok"为了解除警报(使用下面的代码生成),模态视图控制器也被解除。

UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK"
                                             style:UIAlertActionStyleDefault 
                                           handler:^(UIAlertAction *action{ 
                                                    [self dismissViewControllerAnimated: YES completion: nil];}];

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Sign up problem."
                                                               message:@"Some fields are empty. Please check your inputs and try again."
                                                        preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:ok];
[self presentViewController:alert animated:YES completion:nil];

如何解除警报?

我意识到我可以通过使用导航控制器类型设置而隐藏导航栏来避免此问题,因此我获得与模态视图控制器相同的感觉,但这看起来很愚蠢。感谢。

2 个答案:

答案 0 :(得分:21)

不要在按钮处理程序中调用self dismissViewController。这特别声明您希望视图控制器被解雇。

您无需取消警报。它会自动解散自己。您应该在按钮处理程序中执行的唯一操作是执行您需要的任何操作。如果你不需要做任何事情就什么都不做。

如果您的提醒只是一条消息而您不需要执行任何操作,请执行以下操作:

UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];

答案 1 :(得分:0)

您无需在按钮处理程序中以任何方式手动关闭或删除UIAlertController - 它本身就是这样做。

只需移除对dismissViewControllerAnimated:completion:的调用。