当我拨打viewController.presentViewController
时,如果已经显示另一个控制器,则会出现以下警告。
警告:在演示文稿正在进行时尝试演示......
如果演示文稿已经在进行中,那么预期的行为是什么都不做,那么忽略警告是否安全?
viewController.presentViewController(...)
或者我必须在出示之前检查一下吗?
if viewController.presentedViewController == nil {
viewController.presentViewController(...)
}
答案 0 :(得分:0)
不要忽略。因为这意味着您尝试在当前viewcontroller外观之前显示视图。如果忽略此警告,则下一个视图无法显示。
1.检查在当前视图加载之前不显示任何视图控制器(避免viewDidLoad
,viewWillAppear
方法呈现nextview控制器)因为它缺少ViewController层次结构
2.尝试使用ViewDidAppear
代替viewWillAppear
和viewDidLoad
来提供下一个视图控制器
答案 1 :(得分:0)
不,你不应该忽视这个警告。实际上你不应该忽视任何警告,因为警告可能会在将来造成麻烦。因此,最好找到该警告的解决方案。
不知道您的案例,即您所呈现的位置VC
以及已呈现的VC
。但是,您需要像这样编码,首先关闭当前的presenred控制器,然后尝试呈现新的控制器。
例如,
当你发现这个警告时,我正在解释一个案例:
假设您正在使用actionsheet
,并点击了actionsheet
的{{1}}按钮,并且您正在使用newVC
委托方式展示clickedButtonAtIndex
在这种情况下,您会收到此警告,但无法显示newVC
,因为newVC
已经显示。
这种情况的解决方案是:使用actionsheet
的{{1}}委托方法。用户didDismissWithButtonIndex
和actionsheet
会调用它。
因此,您不会收到警告并能够显示press button
同样明智地检查你的情况,看看哪个VC已经呈现,并在成功解除当前呈现的VC后呈现newVC。
希望这会有所帮助:)