【问题标题】:Popping view controller immediately after pushing it推送后立即弹出视图控制器
【发布时间】:2014-10-03 01:02:23
【问题描述】:

我希望视图控制器检查一些东西,如果它是真的,它将允许用户使用视图控制器,如果它是假的,它会向用户显示警报并将用户发送回他/她来自的地方.

所以我尝试将其添加到 viewDidLoad 末尾的 if 语句中:

[self.navigationController popViewControllerAnimated:YES]

但是,我得到了错误:

2014-08-09 20:12:59.731 ProjectName[1978:60b] 嵌套弹出动画可以 导致导航栏损坏

2014-08-09 20:13:00.118 ProjectName[1978:60b] 完成一个 导航转换处于意外状态。导航栏子视图 树可能会损坏。

我从this StackOverflow question 了解到,在viewDidLoad 完成之前调用pushViewControllerpopViewController 是不安全的。有没有办法解决这个问题?

TLDR:我正在尝试将视图控制器推入堆栈,显示警报,然后将视图控制器从堆栈中弹出。

编辑:添加代码。

【问题讨论】:

  • viewDidAppear: 怎么样?您还可以考虑显示向用户解释正在发生的事情的警报,并在用户解除警报后弹出控制器。

标签: ios uinavigationcontroller viewdidload popviewcontroller


【解决方案1】:

如果您想显示警报,这应该相当容易。

1 - 从viewDidAppear 中调用[UIAlertView show] 方法。建议使用viewDidAppear,因为它将是视图生命周期中的最后一个,当视图控制器完全压入堆栈时。所以弹出是无害的。

2 - 在clickedButtonAtIndex 委托方法中,调用popViewControllerAnimated

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 2014-09-16
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多