忽略"是否安全:警告:尝试呈现......正在进行演示"?

时间:2016-05-20 05:53:29

标签: ios swift

当我拨打viewController.presentViewController时,如果已经显示另一个控制器,则会出现以下警告。

  

警告:在演示文稿正在进行时尝试演示......

如果演示文稿已经在进行中,那么预期的行为是什么都不做,那么忽略警告是否安全?

viewController.presentViewController(...)

或者我必须在出示之前检查一下吗?

if viewController.presentedViewController == nil {
    viewController.presentViewController(...)
}

2 个答案:

答案 0 :(得分:0)

不要忽略。因为这意味着您尝试在当前viewcontroller外观之前显示视图。如果忽略此警告,则下一个视图无法显示。

1.检查在当前视图加载之前不显示任何视图控制器(避免viewDidLoadviewWillAppear方法呈现nextview控制器)因为它缺少ViewController层次结构

2.尝试使用ViewDidAppear代替viewWillAppearviewDidLoad来提供下一个视图控制器

答案 1 :(得分:0)

不,你不应该忽视这个警告。实际上你不应该忽视任何警告,因为警告可能会在将来造成麻烦。因此,最好找到该警告的解决方案。

不知道您的案例,即您所呈现的位置VC以及已呈现的VC。但是,您需要像这样编码,首先关闭当前的presenred控制器,然后尝试呈现新的控制器。

例如,

当你发现这个警告时,我正在解释一个案例:

假设您正在使用actionsheet,并点击了actionsheet的{​​{1}}按钮,并且您正在使用newVC委托方式展示clickedButtonAtIndex

在这种情况下,您会收到此警告,但无法显示newVC,因为newVC已经显示。

这种情况的解决方案是:使用actionsheet的{​​{1}}委托方法。用户didDismissWithButtonIndexactionsheet会调用它。

因此,您不会收到警告并能够显示press button

同样明智地检查你的情况,看看哪个VC已经呈现,并在成功解除当前呈现的VC后呈现newVC。

希望这会有所帮助:)