能在模态视图控制器上使用UIAlertController吗?

5

我有一个呈现(模态)的视图控制器,需要呈现一个操作表。然而,当我这样做时:

UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];

...

[self presentViewController:actionSheet animated:YES completion:nil];

I get this:

Warning: Attempt to present <UIAlertController: 0x7fed4a608120>  on <MyViewController: 0x7fed4d1ca520> which is already presenting (null)

这里有没有解决方法?从一个已经展示的视图控制器中使用警告框或操作表似乎是一个相当常见的场景。


你在什么地方和何时尝试调用你问题中的代码?请提供更多上下文。 - rmaddy
@rmaddy,是在呈现的视图控制器上按下按钮时发生的。 - soleil
这应该可以工作。问题不在这里。您可以创建一个示例项目,该项目呈现一个模态视图,然后再呈现一个操作表。如果失败了,请发布代码。 - Joe Smith
1个回答

0

我认为你正在尝试在呈现视图控制器的viewDidLoad中显示操作表。这就是控制器中未显示操作表的原因,因为控制器的视图尚未加载。所以如果你这样做了,那么请将这些代码编写到你的viewDidAppear方法中来显示操作表,它将按预期显示给你。

这是代码片段。我已经测试过它,它可以正常工作。

代码:

- (void)viewDidAppear:(BOOL)animated
{
    UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"Hello" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

    UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

    }];

    [actionSheet addAction:ok];

    [self presentViewController:actionSheet animated:YES completion:nil];

}

编程愉快...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接