我在我的项目拖视图控制器和我联系的第一个VC导航控制器,但问题是:我用现在去第二VC(那是不是意味着我没有使用赛格瑞)...我怎样才能重新设置为第一VC在导航控制器通过代码(没有SEGUE)。
let storyboard = self.storyboard
let viewcontroller = storyboard?.instantiateViewController(withIdentifier: "contact_detail") as! ViewController2
viewcontroller.arr2 = arr
present(viewcontroller, animated: true, completion: nil)
随着dismiss
方法,将工作。
驳回,是由视图控制器模态呈现的视图控制器。 (苹果文件)
self.dismiss(animated: true, completion: nil)
如果您呈现与viewcontroller
方法present
,你可以用dismiss
方法驳回。
如果要添加与push
方法的任何视图控制器那么只有它会被添加到您的导航堆栈,你可以通过调用popviewcontroller
它是back
行动将其删除。
在这里,你都呈现viewcontroller
,因此它不会被添加到您的第一个导航堆栈,你不能与后面的点击pop
行动将其删除。
如果您正在寻找像呈现视图控制器上的功能一个back
按钮,就可以在back
添加toolbar
按钮,dismiss
上后退按钮行动viewcontroller
,并同时驳回能像popnavigation制作动画。
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)
}
我用pushViewController
解决了这个
self.navigationController?.pushViewController(MyViewController, animated: true)