5

私はビューベースのアプリを使用し、プログラムでTabBarを生成しました。問題は次のとおりです。

タブバーコントローラーを備えた2つのタブ項目があるIphoneアプリケーションがあります。タブバーコントローラー内では、各ビューコントローラーはナビゲーションコントローラーです。2番目のタブを選択すると、ビューコントローラーがあります。 self.navigation controller.and そのviewcontrollerで私はプッシュして、そのように行きます.しかし、問題は、私がtabitemを再度選択しているときに、pushviewcotrollerがそこに表示されることです.しかし、タブを選択しているときに、そこにrootviewが再度必要です

AppDelegate.m の私のコードは次のとおりです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

 UINavigationController *nc1;
    nc1 = [[UINavigationController alloc] init];

UIViewController *viewController1 = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    nc1.viewControllers = [NSArray arrayWithObjects:viewController1, nil];





    UINavigationController *nc2;
    nc2 = [[UINavigationController alloc] init];

 UIViewController *viewController2 = [[[secondview alloc] initWithNibName:@"secondview" bundle:nil] autorelease];
    nc2.viewControllers = [NSArray arrayWithObjects:viewController2, nil];


    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
   self.tabBarController.viewControllers = [NSArray arrayWithObjects:nc1,nc2,nil];
  self.window.rootViewController=self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
4

4 に答える 4

12

あなたはこれを探しているかもしれません:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{       
    int tabitem = tabBarController.selectedIndex;
    [[tabBarController.viewControllers objectAtIndex:tabitem] popToRootViewControllerAnimated:YES];
}
于 2012-08-27T13:27:17.020 に答える
4

UITabBarControllerSwift では、クラスで次のように実行できます。

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
    let rootView = self.viewControllers![self.selectedIndex] as! UINavigationController
    rootView.popToRootViewControllerAnimated(false)
}
于 2016-04-13T10:08:26.907 に答える
0

次の 2 つの方法を採用する必要があると思います。

UINavigationController: - popToRootViewControllerAnimated:

UITabBarControllerDelegate: tabBarController:didSelectViewController:

私が自分のプログラムで使用しているアプローチは、ルート ビュー コントローラーが画面上にある間だけタブ バーを表示することです。

于 2012-08-27T13:30:44.680 に答える
0

に追加UITabBarControllerDelegateAppDelegatedidFinishLaunchingWithOptionsメソッドで、デリゲートを のように設定しますUITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; tabBarController.delegate = self;。次に、タブバーが選択されたときにデリゲート メソッド- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewControllerが呼び出されます。

于 2016-02-03T17:10:50.103 に答える