ios - 应用程序中的 UINavigation 问题

标签 ios swift

我的 Storyboard中有多个 Storyboard。我已经将firstVC 嵌入到navigationcontroller 中,并通过segues 保持连接到firstvc。其余的 VC 未嵌入导航 Controller 中。现在,当我单击按钮打开下一个没有导航 Controller 的 VC 时。它会打开它两次。当我断开连接时,它不会打开 VC。我很困惑为什么会这样。这就是我的用户界面的样子, enter image description here

这就是我执行segue的方式,

self.performSegue(withIdentifier: "GoToNextVC", sender: self)

最佳答案

View Controller 在堆栈层次结构上运行。通过将第一个 View Controller 嵌入 UINavigationController 并将其设置为初始 View Controller ,您可以将其设为根整个堆栈的 View Controller 。您遇到的问题之所以发生,是因为每次您调用 performSegue(withIdentifier:sender:) 时,您都会在 Root View Controller 不知情的情况下继续访问 View Controller 。这会导致堆栈无序且脱节,从而阻止您在调用 dismiss(animated:completion:) 时返回到之前的 View Controller 。

尝试将每个 View Controller 插入堆栈,而不是使用segues:

navigationController?.pushViewController(VIEW_CONTROLLER, animated: true)

要使用这个:

  • 删除 Interface Builder 中的所有 Segue,它们不再需要。

  • VIEW_CONTROLLER 替换为您要推送的 View Controller 。

关于ios - 应用程序中的 UINavigation 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917914/

相关文章:

iphone - 通过循环将 TouchUpInside 事件分配给多个 UIImageView,并使用可以进一步对每个 UIImageView 进行动画/操作的处理程序方法

ios - 点击作为 UIView subview 的 UIButton

ios - 具有来自一个 API 源的多个部分的 RxDataSources tableView

ios - Swift viewdidload 中的 @IB Action 函数

ios - 如何在两个带有参数的函数之间快速传递值或数据?

iphone - 核心数据中缺少对象

ios - 点击手势以使用 TableView 关闭 UITextField

ios - UITableView 部分中的背景图像隐藏部分标题

ios - 如何从它的项目 ViewControllers 访问 UITabBarController 的变量

ios - 将 BGTaskScheduler API 与新的 iOS 14 应用程序结合使用。如何在没有 AppDelegate 的情况下注册任务?