Ios 以编程方式弹出导航堆栈
我有一个Ios 以编程方式弹出导航堆栈,ios,swift,uinavigationcontroller,stack,uitabbarcontroller,Ios,Swift,Uinavigationcontroller,Stack,Uitabbarcontroller,我有一个UIPageViewController定义如下: class MainPageViewController: UIPageViewController { var view1 : UIViewController = UIViewController() var view2 : UIViewController = UIViewController() var view3 : UIViewController = UIViewController() var current_in
UIPageViewController
定义如下:
class MainPageViewController: UIPageViewController {
var view1 : UIViewController = UIViewController()
var view2 : UIViewController = UIViewController()
var view3 : UIViewController = UIViewController()
var current_index = 0
override func viewDidLoad() {
super.viewDidLoad()
dataSource = self
delegate = self
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let feed = storyboard.instantiateViewControllerWithIdentifier("view1")
view1 = UINavigationController(rootViewController: feed)
let requests = storyboard.instantiateViewControllerWithIdentifier("view2_1")
let view2_1 = UINavigationController(rootViewController: requests)
let chat = storyboard.instantiateViewControllerWithIdentifier("view2_2")
let view2_2 = UINavigationController(rootViewController: chat)
let matches = storyboard.instantiateViewControllerWithIdentifier("view2_3")
let view2_3 = UINavigationController(rootViewController: matches)
let view2 = UITabBarController()
view2.viewControllers = [view2_1 , view2_2 , view2_3]
let item1 = UITabBarItem(title: "Requests",image: UIImage(named : "request_filled_maintab") , tag: 0)
let item2 = UITabBarItem(title: "Chats", image: UIImage(named : "chat_filled_maintab"), tag: 1)
let item3 = UITabBarItem(title: "Matches", image: UIImage(named : "matches_filled_tab"), tag: 2)
view2_1.tabBarItem = item1
view2_2.tabBarItem = item2
view2_3.tabBarItem = item3
let story = storyboard.instantiateViewControllerWithIdentifier("view3")
view3 = UINavigationController(rootViewController: story)
view1.view.tag = 0
view3.view.tag = 1
view2.view.tag = 2
}
它基本上有三个视图,view1
view2
和view3
。现在我正在添加推送通知处理,我需要做的是,如果用户在view1
或view3
(两个导航控制器)中,我需要将导航堆栈弹出到根视图控制器,然后转到view2
所以基本上我的布局是这样的UIPageViewController
->
UINavigationController
(视图1)
UINavigationController
(视图3)
UITabBarController
(视图2)
我正在尝试这种方法:
if var topController = UIApplication.sharedApplication().keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
topController.navigationController?.popToRootViewControllerAnimated(true)
}
self.goToNextPage()
self.goToNextPage()
self.view2!.selectedIndex = 1
如果我在navigationController
的rootViewController
,则此代码可以工作,但在任何其他情况下,它似乎都不起任何作用。我不知道为什么
(goToNextPage
是一种通过编程将pageViewController移动到下一页的方法)