在我正在编写的项目中,当我呈现一个新的视图控制器时,我收到此错误:
尝试呈现....当演示正在进行中!
我认为这是因为我首先提出了一个新的视图控制器,然后在该视图中提出了另一个视图控制器。
- (void)loadLabelSettings {
LabelSettingsViewController *labelSettings =
[[LabelSettingsViewController alloc] init];
labelSettings.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:labelSettings animated:YES completion:nil];
}
该程序不会崩溃或运行良好的任何东西,并且我的代码中没有错误或警告。所以我的问题是:这是我应该关注的事情吗,如果是,我该如何解决?
提前致谢:)
就像你说的,这可能是由于同时呈现两个视图控制器引起的。等待显示第二个视图控制器,直到第一个视图控制器完全呈现。一个好的位置是在viewDidAppear
这样做。
就我而言,我通过UIStoryboardSegue
将UIViewControllers
UIButton
与第二个UIViewController
连接起来。在我的代码中,a 以编程方式第二次调用它。因此,按UIButton
导致显示指定视图两次。
我找到了我的问题,正如斯科特所写的那样,这是因为我同时展示了 2 个视图控制器。发生这种情况是因为我有一个按钮,它有一个UILongPressGestureRecognizer,它显示了新的视图控制器。问题是,当使用UILongPressGestureRecognizer时,正在调用的方法被调用两次。首先,当检测到长按并将手指从屏幕上松开时。因此,同一视图的当前ViewController方法被调用了两次。我通过仅对第一次检测做出反应来解决此问题。这是代码:
- (void)loadButtonSettings:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
}
}