我怎样才能重新设置为第一个视图控制器通过导航控制器代码目前没有SEGUE?

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

我在我的项目拖视图控制器和我联系的第一个VC导航控制器,但问题是:我用现在去第二VC(那是不是意味着我没有使用赛格瑞)...我怎样才能重新设置为第一VC在导航控制器通过代码(没有SEGUE)。

从我的故事板my storyboard我的代码的图片:

let storyboard = self.storyboard
let viewcontroller = storyboard?.instantiateViewController(withIdentifier: "contact_detail") as! ViewController2
viewcontroller.arr2 = arr
present(viewcontroller, animated: true, completion: nil)
ios swift
4个回答
1
投票

随着dismiss方法,将工作。

驳回,是由视图控制器模态呈现的视图控制器。 (苹果文件)

 self.dismiss(animated: true, completion: nil) 

0
投票

如果您呈现与viewcontroller方法present,你可以用dismiss方法驳回。

如果要添加与push方法的任何视图控制器那么只有它会被添加到您的导航堆栈,你可以通过调用popviewcontroller它是back行动将其删除。

在这里,你都呈现viewcontroller,因此它不会被添加到您的第一个导航堆栈,你不能与后面的点击pop行动将其删除。

如果您正在寻找像呈现视图控制器上的功能一个back按钮,就可以在back添加toolbar按钮,dismiss上后退按钮行动viewcontroller,并同时驳回能像popnavigation制作动画。


0
投票
extension UINavigationController { 
     public func removeViewController(classes : [String]) {
           var vcs = [UIViewControllers]()
           for viewController in self.viewControllers {
               let name = viewController.className
               if !classes.contains(name) {
                    vcs.append(viewController)
                }
           }
           if classes.count < vcs.count {
               self.viewControllers = vcs
           }
    }
}

现在认为你有4个viewControllers,A,B,C,d,要删除B和C和回迁

在D的视图控制器

override func viewDidLoad() {
   super.viewDidLoad()
   //your works
   let viewControllersToRemove = [String(describing: type(of:B)), String(describing: type(of:C))]
   navigationController.removeViewControoler(classes : viewControllersToRemove)
}

0
投票

我用pushViewController解决了这个

            self.navigationController?.pushViewController(MyViewController, animated: true)
© www.soinside.com 2019 - 2024. All rights reserved.