在我写的一个项目中,当我提出一个新的视图控制器时,我得到了这个错误:
在演示文稿正在进行时尝试演示....
我认为这是因为我首先提出了一个新的视图控制器,然后在该视图中我呈现了另一个视图控制器。
- (void)loadLabelSettings {
LabelSettingsViewController *labelSettings =
[[LabelSettingsViewController alloc] init];
labelSettings.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:labelSettings animated:YES completion:nil];
}
程序没有崩溃或运行得很好,我的代码中没有错误或警告。所以我的问题是:这是我应该关注的问题,如果是,我该如何解决呢?
提前致谢:)
答案 0 :(得分:2)
就像你说的那样,可能是同时出现两个视图控制器造成的。等待呈现第二个视图控制器,直到第一个视图控制器完全呈现。一个好的位置是在viewDidAppear
中执行此操作。
答案 1 :(得分:1)
在我的情况下,我将UIViewControllers
UIButton
和第二个UIViewController
与UIStoryboardSegue
相关联。在我的代码中,以编程方式第二次调用它。因此,按UIButton
会导致指定视图呈现两次。
答案 2 :(得分:0)
我想出了我的问题,斯科特写道,因为我同时展示了2个视图控制器。之所以发生这种情况,是因为我有一个带有UILongPressGestureRecognizer的按钮,它显示了新的视图控制器。问题是当使用UILongPressGestureRecognizer时,被调用的方法被调用两次。首先检测到长按并且手指从屏幕上释放。所以同一视图的presentViewController方法被调用了两次。我通过仅对第一次检测做出反应来解决这个问题。这是代码:
- (void)loadButtonSettings:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
}
}