当使用swift单击后退按钮时,如何从任何当前视图返回到根视图?

时间:2016-04-24 06:10:21

标签: ios swift

每当我在任何当前视图中点击左上角的“后退”按钮时,我想回到根视图。

我发现popToRootViewControllerAnimated可能会有所帮助,但我不知道如何使用它,在视图类中添加它的位置。

也许我可以使用以下功能?

func popToRootViewControllerAnimated(_ animated: Bool) -> [UIViewController]?

但是如果我点击后退按钮怎么用呢?

1 个答案:

答案 0 :(得分:4)

正如官方文件"Pushing and popping stack items"

中所述
func popToRootViewControllerAnimated(_ animated: Bool) -> [UIViewController]?
  

弹出除根视图外的堆栈上的所有视图控制器   控制器并更新显示。

您可以简单地使用它:

@IBAction func backToRootButton(sender: UIButton) {
        navigationController?.popToRootViewControllerAnimated(true)
}

此图片可以解释何时需要转到rootViewController: enter image description here

使用以下代码,您可以自定义navigationController 后退按钮

    override func viewDidLoad {
            super.viewDidLoad()
            self.navigationItem.hidesBackButton = true
            let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Bordered, target: self, action: "back:")
            self.navigationItem.leftBarButtonItem = newBackButton;
        }

        func back(sender: UIBarButtonItem) {
            // Perform your custom actions
            // ...
            // Go back to the previous ViewController
            //self.navigationController?.popViewControllerAnimated(true)
            // ..or go back to the rootViewController             
     self.navigationController?.popToRootViewControllerAnimated(true)
        }

你决定是否需要简单地弹出到上一个viewController或者直接转到root,取决于你的堆栈有多深,或者你是topViewController的人是谁。