Ios 弹出到根导航控制器-Swift 3
我有多个导航控制器。它们的放置方式如下所示:Ios 弹出到根导航控制器-Swift 3,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,我有多个导航控制器。它们的放置方式如下所示: (A)SWRevealViewController (B)Navigation Controller(sw_front) (C)HomeViewController (root view controller) (D)TabBarController --> (E)Navigation Controller 1--
(A)SWRevealViewController
(B)Navigation Controller(sw_front)
(C)HomeViewController (root view controller)
(D)TabBarController -->
(E)Navigation Controller 1-->
(F)TableController 1 -->
(F)TableController 2.
(E)Navigation Controller 2-->
(F)TableController 1 -->
(F)TableController 2.
我想跳转到主导航控制器的根视图控制器,即,我想从F转到C或B。我提到了答案,并将其转换为swift,如下所示:
let appdel: AppDelegate = UIApplication.shared.delegate as! AppDelegate
let mainwindow : UIWindow = appdel.window!
let vcObj : HomeViewController = HomeViewController()
let navObj : UINavigationController = UINavigationController(rootViewController: vcObj)
mainwindow.rootViewController = navObj
但它只是显示一个空白的黑屏。请任何人帮忙
我使用的是Xcode 8和Swift 3。我使用的是
let modal: UIViewController = self.storyboard?.instantiateViewController(withIdentifier: StoryBoardID) as UIViewController!
self.present(modal, animated: true, completion: nil)
做这样的事。StoryBoradID是您给ViewController的标识符。这可能对您的情况有所帮助。您可以通过迭代
presentingViewController
层次结构,然后对要解除的视图控制器调用dismissViewController
来解除对特定视图控制器的控制
例如:
func dismissToHome() {
var vc = self.presentingViewController
while (vc != nil) {
if (vc!.isKind(of: HomeViewController.self)) {
break
}
vc = vc?.presentingViewController
}
vc?.dismiss(animated: true, completion: {
print("Dismissed to: ", vc!)
})
}
上述操作将在
HomeViewController
上调用dismissViewController
,这将关闭它显示的视图控制器。由于该控制器被解除,所有其他子控制器将被其父控制器解除。而不是使用sw推送您的tabBarVC
。pushFrontViewController(VC,动画:true)
尝试使用navigationController
的推送方法
self.navigationController?.pushViewController(tabBarVC!, animated: true)
然后从TableController调用以下命令,转到HomeViewController
func goToHomeNavVC(){
//parent is TabBar Controller
self.parent?.navigationController?.popToRootViewController(animated: true)
}
下面是一个让抽屉视图控制器=viewControllerFrom(“Main”,vcid:“SliderMinuViewController”)让仪表板VC=viewControllerFrom(“Main”,vcid:“UserDashboardViewController”)为!UserDashboardViewController让navigationControl=UINavigationController(rootViewController:dashboardVC)窗口?.rootViewController=navigationControl您如何将TabBarController添加到HomeViewController?@Himanshuradiaya这不起作用。没有类似viewControllerFrom()@ZaidPathan的内容。我在情节提要上添加了它,但通过中的情节提要ID访问了它code@user7205816但是你是怎么加上去的?我是说present/push/addChild视图?@user7205816;我在和你相同的层次结构上测试了这个。我通过CocoaPods安装了
SWRevealViewController
。它在XCode 8.2.1 iOS 8、9、10模拟器上运行良好。我使用了从C到D的SWRevealPushSegue,可能这就是它不工作的原因。如果我这样做,pushViewController则在实际导航栏下方有一个导航栏的空间。如果可能的话,发送您的演示项目这是不可能的,因为项目即将完成。。但我需要通过代码来执行SWRevealViewControllerPushSegue,所以我甚至不能使用.pushViewController。如果您需要一对一的帮助,请与我联系。否则我肯定需要一个演示。这样做将使导航控制器中的所有VC都保留在内存中,并允许用户在自己的顶部重新创建它们。坏习惯。