Ios 仅关闭显示的视图控制器,而不是整个导航堆栈
我有一个选项卡栏控制器。因为第一个选项卡是导航控制器。我们把它叫做控制器A。然后我在它上面推另一个视图控制器。我们把它叫做控制器B。 之后,我将从视图控制器B演示视图控制器C。现在我只想关闭视图控制器B 选项卡栏-A(导航控制器的根vc)->推送vc->B->显示vc->C A到B将使用self.navigationController.pushViewController(动画:true,完成:nil) B到C是这样的Ios 仅关闭显示的视图控制器,而不是整个导航堆栈,ios,swift,uinavigationcontroller,presentmodalviewcontroller,dismissviewcontroller,Ios,Swift,Uinavigationcontroller,Presentmodalviewcontroller,Dismissviewcontroller,我有一个选项卡栏控制器。因为第一个选项卡是导航控制器。我们把它叫做控制器A。然后我在它上面推另一个视图控制器。我们把它叫做控制器B。 之后,我将从视图控制器B演示视图控制器C。现在我只想关闭视图控制器B 选项卡栏-A(导航控制器的根vc)->推送vc->B->显示vc->C A到B将使用self.navigationController.pushViewController(动画:true,完成:nil) B到C是这样的 let vc=CViewController() vc.modalPres
let vc=CViewController()
vc.modalPresentationStyle=.fullScreen
self.present(vc,动画:true,完成:nil)
现在当我使用
self.disclose(动画:true,完成:nil)
在视图控制器C中。它返回到根视图控制器,即vc A。我希望它返回到vc B
经过一番思考,我复制了您试图做的事情,并发现问题不在于调用Disclease。这就是您最初调用视图控制器的方式。把你的代码从B改为C 而不是: 设vc=CViewController() vc.modalPresentationStyle=.fullScreen self.present(vc,动画:true,完成:nil) 使用: 您必须在序列图像板中指定视图控制器的标识符(序列图像板ID) 现在,当您调用self.disclose()时,它应该只关闭C。
我已经用Xcode 11.1在我的计算机上测试了这个问题。当你调用self.disclease时,你不是在C上调用disclease,而是在B上调用disclease。你试过popViewController吗?我已经用vc C编写了disclease代码。pop view控制器不起作用,因为C是以模式显示的,而不是按方式显示的。我假设你试过“vc.disclease()”而不是self.disclease()?是的,已经试过了。你可以添加故事板的屏幕截图吗?请参阅:关于推送视图控制器的内容。我的问题是如何表达。
let sb : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewController(identifier: "C")
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: true, completion: nil)