【问题标题】:deleting a 'stack' of navigation views Xcode swift删除导航视图的“堆栈”Xcode swift
【发布时间】:2016-11-07 21:18:07
【问题描述】:

下面的链接显示了我的故事板,我认为我的问题通过图像更容易理解。 我的 tabBarController 管理嵌入在 navigationController 中的选项卡。 UIButton“开始”通过显示转场(蓝色箭头)通向下一个视图。在这个视图上,一个条形按钮项再次通过显示转场(绿色箭头)通向最后一个 viewController。从最后一个视图控制器,我想再次通过条形按钮项(黑色箭头)返回到我的初始视图控制器。但是现在出现了问题,我的初始视图控制器在左上角显示了一个“后退按钮”(当然,因为通过黑色箭头,初始视图刚刚添加到导航堆栈中,对吧?!)。我通过返回标签栏控制器(红色箭头)解决了这个问题。现在不再有“后退”按钮,但现在我想知道是否没有像我的导航视图堆栈仍然存在于后台并浪费内存或类似的东西。我怎样才能删除这个堆栈或者它是否存在? (也许我完全错了)或者有没有更好的方法可以回到我的第一个视图?

抱歉,我对我的问题的描述不专业,但我刚开始编码,所以对于某些问题我还没有合适的词。

非常感谢!

【问题讨论】:

  • 使用展开转场

标签: ios swift storyboard navigationcontroller


【解决方案1】:

如果我理解正确,您希望您的最后一个视图控制器导航到导航堆栈的初始视图控制器。在您的最后一个视图控制器上,您可以将其添加到您的代码中:

       override func viewDidLoad() {
    super.viewDidLoad()
    //this will add a button to top right of the nav bar, 
    //change "ButtonName" to a title you want
    //this button will call the blackArrow function
    self.navigationItem.rightBarButtonItem = UIBarButtonItem (
        title: "ButtonName", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.blackArrow))
}


func blackArrow() {
//this function navigates to the initial view controller of the navigation controller
if let navigationController = self.navigationController {
    navigationController.popToRootViewController(animated: true)

    }
} 

【讨论】:

  • 谢谢!如果我回到那个视图控制器,我是否必须删除视图控制器堆栈,或者堆栈是否减少到只有根视图控制器?
  • 如果你需要viewcontrollers堆栈,你不必删除它们,它不会被简化为只有根视图控制器。导航控制器仅显示初始视图,您可以导航连接到它的其他视图控制器,例如第一次,例如蓝色箭头然后绿色箭头。
猜你喜欢
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 2020-12-07
  • 1970-01-01
相关资源
最近更新 更多