如何解雇导航控制器?

问题描述 投票:-1回答:1

我正在使用showDetailViewController()呈现导航控制器(detailview)。我想在按下按钮时忽略它。我该怎么解雇这个viewcontroller?

我试过的代码:

//detailviewcontroller
    @objc
    func cancel(_ sender: Any) {
        print("cancelPressed")
        //self.navigationController?.popViewController(animated: true)
        //self.navigationController?.dismiss(animated: true, completion: nil)
        //self.dismiss(animated: true, completion: nil)
        //splitViewController?.dismiss(animated: true, completion: nil)
        //splitViewController?.navigationController?.popToRootViewController(animated: true)
        //splitViewController?.navigationController?.popViewController(animated: true)
        //splitViewController?.navigationController?.dismiss(animated: true, completion: nil)
        //navigationController?.popViewController(animated: true)
        //navigationController?.dismiss(animated: true, completion: nil)
        //self.navigationController?.popToRootViewController(animated: true)
        //self.navigationController?.viewControllers.remove(at: 1)
        //self.navigationController?.viewControllers.remove(at: 0) - this one removes to blank view
        //self.presentingViewController?.dismiss(animated: true, completion: nil)
    }

我尝试了多个stackoverflow解决方案:

Dismissing a navigation view controller

How to dismiss a view controller in a navigation controller, without dismissing the whole stack

ios swift - dismiss root view controller of navigation controller

Can't dismiss View Controller that's embedded in a Navigation Controller

How to dismiss a navigation controller presented from another navigation controller in iOS 10 and below?

Can't dismiss navigation controller in Swift

Can't dismiss navigation controller in Swift

Dismissing View Controller Doesn't Work While Using Navigation Controller

Dismiss current navigation controller when clicked tab bar

How to dismiss a certain view controller

我如何呈现detailviewcontroller:

//masterviewcontroller
// delegation for passing data between controllers
weak var passDelegate: PlaceSelectionDelegate?

func insertNewObject(_ sender: Any) {
    if let detailViewController = passDelegate as? DetailViewController {
        if let detailNavigationController = detailViewController.navigationController {
            detailViewController.delegate = self
            splitViewController?.showDetailViewController(detailNavigationController, sender: nil)
        }
    }
}

预期结果:在按下按钮时关闭详细视图控制器。

实际结果:没有解雇。

swift uinavigationcontroller uisplitviewcontroller dismiss
1个回答
-1
投票

如果您只想关闭导航控制器,这应该可以工作

navigationController?.dismiss(animated: true, completion: nil)
© www.soinside.com 2019 - 2024. All rights reserved.