簡體   English   中英

如何從Tabbar控制器獲取UINavigation控制器並推送特定視圖

[英]How to get UINavigation controller from Tabbar controller and push a specific view

我正在嘗試實現didReceiveRemoteNotification方法。 當我收到推送通知時,我想顯示一個特定的視圖。 我的應用程序使用UITabbarController作為根視圖控制器,並使用UINavigationController作為其子級:

故事板

這是我的appdelegate:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
        UINavigationController *navController = (UINavigationController *)[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
        NSString * storyboardName = @"others";
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
        UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessAccountView"];
        [navController pushViewController:vc animated:YES];
        [PFPush handlePush:userInfo];
}

不幸的是,該代碼無法正常工作。 如果我將[navController pushViewController:vc animated:YES]更改為[navController presentViewController:vc animated:YES] ,則可以使用,但是我將丟失導航欄。 有誰知道如何做到這一點?

請遵循本教程(Storyboard教程:創建選項卡欄控制器和Web視圖)。

http://www.appcoda.com/storyboard-tutorial-create-tab-bar-controller-and-web-view/

這是一個逐步解決方案。

  • 首先檢查您是否要在其上按下視圖控制器的選項卡 如果不是,請使用setSelectedIndexsetSelectedViewController首先選擇該選項卡。
  • 接下來,獲取rootViewController的選定視圖控制器的rootViewController (您的UINavigationController )。
  • 接下來,實例化要推送的viewController,並將其推送到navController上。

樣例代碼:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    UITabBarController* tabController = self.window.rootViewController;
    if (tabController.selectedIndex != 2) [tabController setSelectedIndex:2];



    UINavigationController *navController = tabController.selectedViewController;
    NSString * storyboardName = @"others";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessAccountView"];
    [navController pushViewController:vc animated:YES];
    [PFPush handlePush:userInfo];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM