【问题标题】:Navigation stack will not be updated, segue from GMSAutocompleteResultsViewController导航堆栈不会更新,从 GMSAutocompleteResultsViewController 开始
【发布时间】:2018-05-17 00:56:55
【问题描述】:

我在通过 pushViewController 转至现有 UIViewcontroller 时遇到问题。

当我点击 resultsViewController 中的位置时,我希望转到 MainVC,但我有一个错误:

pushViewController:animated:在现有过渡或演示发生时调用;导航堆栈不会更新。

我该如何解决这个问题,并过渡到 MainVC?

【问题讨论】:

  • SearchVC 在层次结构中的什么位置?它是导航 VC 的根吗?它被推到导航堆栈上了吗?是“呈现”的吗?您的情节提要中是否定义了实际的segues?如果是这样,您是否有可能同时触发一个 segue 调用.pushViewController
  • 请查看截图imgur.com/a/vcNVU。它是一个层次结构,在 Storyboard 中定义了实际的 segues。 SearchVC 是从 MainVC 以编程方式呈现的:let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil), let searchVC = storyBoard.instantiateViewController(withIdentifier: "SearchVC") as! SearchVC, self.navigationController?.pushViewController(searchVC, animated: false),这种转换效果很好。

标签: ios swift uinavigationcontroller segue uistoryboardsegue


【解决方案1】:

几件事:

  1. 确保您没有“加倍”导航。如果您使用Segue 转换到另一个视图控制器,请不要调用.pushViewController()present()

  2. 了解 pushpresent 之间的区别。

在您的情况下,看起来(根据您的描述和屏幕截图)MainVC 是您的 NavController 的根 VC,并且 Segue 已将SearchVC 推送到导航堆栈上。如果SearchVC“从右侧滑入”,几乎可以肯定是这样。

如果您已将 VC 推送到导航堆栈,那么您希望使用 popViewController(animated: Bool) 将其弹出从堆栈中弹出。这将“将前一个 VC 从左侧滑回”。

在您的goToVc() 函数中,您正在创建MainVCnew 实例并尝试将其压入堆栈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2020-12-07
    • 2019-10-08
    相关资源
    最近更新 更多