-3

数日間、私はsに苦しんでいUITabBarItemます。

私は、Interface Builderを使用せずに、プログラム的な方法でアプリケーションを実行しました。UINavigationBar私はとの両方を持っていUITabbarControllerます。

ナビゲーションを進めたとき(つまり、次のページに移動したとき)のホームページから、次のタブ項目(連絡先)をクリックしたとき、またホームページをクリックしたとき、ホームページに移動していません。 、それは私がそれを残した前のページに残っています、それはホームページにまったくリダイレ​​クトされていません、

UITabbarControllerアプリケーションデリゲートに-codeを配置しました:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.tabBarController = [[UITabBarController alloc] init];
viewController *vc = [[viewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
[navController.tabBarItem setTitle:@"Home"];
[navController.tabBarItem setImage:[UIImage imageNamed:@"home.png"]];

viewController1 *vc1 = [[viewController1 alloc] init];
UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:vc1];
[navController1.tabBarItem setTitle:@"Contact"];
[navController1.tabBarItem setImage:[UIImage imageNamed:@"contact.png"]];

viewController2 *vc2 = [[MapViewController alloc] init];
UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:vc2];
[navController2.tabBarItem setTitle:@"Info"];
[navController2.tabBarItem setImage:[UIImage imageNamed:@"info.png"]];

NSArray *viewControllers = [NSArray arrayWithObjects:navController, navController1,navController2,  nil];
 _tabBarController.delegate = self;
[_tabBarController setViewControllers:viewControllers];

[self.window setRootViewController:_tabBarController];
[self.window makeKeyAndVisible];
 return YES;

私はこれらの方法を使用しませんでした:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 

提案、または私に役立つかもしれない何かを教えてください。

4

1 に答える 1

0

UITabbarControllerのデフォルトの動作は、タブをタップし、このタブにナビゲーションコントローラーが含まれている場合、navigationcontrollersviewcontroller-stackの上にあるページを取得することです。

これを回避するには、タブをタップするときにpopToRootViewControllerを実行する必要があります。

実装する場合

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
 {
    [viewController.navigationController popToRootViewControllerAnimated:NO];
 }

それはトリックを行う必要があります。

于 2012-06-21T12:16:45.927 に答える