Ios 取消viewController将重置当前导航控制器

Ios 取消viewController将重置当前导航控制器,ios,swift,uinavigationcontroller,presentviewcontroller,Ios,Swift,Uinavigationcontroller,Presentviewcontroller,我有一个导航控制器。viewController的内容如下所示 [RestaurantViewController, MenuViewController, ProductViewController] 在ProductViewController中,我调用 self.navigationController?.present(sideViewController, animated:true, completion:nil) 这将按预期显示视图控制器。现在,当我从sideViewContr

我有一个导航控制器。viewController的内容如下所示

[RestaurantViewController, MenuViewController, ProductViewController]
在ProductViewController中,我调用

self.navigationController?.present(sideViewController, animated:true, completion:nil)
这将按预期显示视图控制器。现在,当我从sideViewController内调用self.disclose/self.presentingViewController.disclose时,原始导航控制器重置为

[RestaurantViewController]

为什么会这样?我只想退出并返回演示视图控制器

为什么不使用

self.present(sideViewController, animated:true, completion:nil)
然后使用

self.dismiss(animated: true , completion: nil)
除此之外,还有很多事情可能会导致你的问题。如果希望在sideViewController上使用导航控制器,请创建导航控制器并将sideViewController设置为rootviewcontroller,然后显示导航控制器

let nav = UINavigationController(rootViewController: //SideViewController)
self.present(nav, animated: true, completion: nil)

在一个干净的小项目中测试,你会发现你描述的行为是不正常的。因此,您正在执行其他操作,导致导航控制器弹出/释放回RestaurantViewController。但你没有描述那是什么;只有你能发现。问题一定在于控制器被解雇后会发生什么。您必须调用了
popToRootViewController
某些地方,或者您正在使用调用此
popToRootViewController
@matt您是对的,我调用了一些代码,声明在ViewWillAspect函数而不是viewDidLoad中调用ViewController,因此正在重置它。谢谢