我有一个呈现(模态)视图控制器,需要提供一个操作表。但是,当我这样做时:
UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
...
[self presentViewController:actionSheet animated:YES completion:nil];
我明白了:
Warning: Attempt to present <UIAlertController: 0x7fed4a608120> on <MyViewController: 0x7fed4d1ca520> which is already presenting (null)
这里有解决方法吗?使用来自显示的视图控制器的警报或操作表似乎是一种非常常见的情况。
答案 0 :(得分:1)
我认为您正在尝试显示来自显示控制器的viewDidLoad
的操作表。这是因为控制器的视图尚未加载而未在控制器中显示操作表的原因。因此,如果您这样做,请编写这些代码以在voewDidAppear
方法中显示操作表,它将按预期显示操作表。
以下是代码段。我测试了它,它正在工作。
代码:
- (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];
}
快乐的编码......