Страдает с UITabbaritems

Уже несколько дней я страдаю от UITabBarItems.

Я сделал свое приложение программным способом, не используя Interface Builder. У меня есть оба UINavigationBar и UITabbarController,

С домашней страницы, когда я продолжаю навигацию (я имею в виду, когда я перехожу на следующую страницу) в то время, когда я нажимаю следующий элемент вкладки (Контакт), и снова, когда я нажимаю кнопку домашней страницы, она не перемещается на домашнюю страницу, он остается на предыдущей странице, где я его оставил, он вообще не перенаправляет на домашнюю страницу,

Я разместил UITabbarController-код в моем приложении делегат:

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 

Пожалуйста, дайте мне предложения, или что-то, что может быть полезно для меня.

1 ответ

Решение

Поведение UITabbarController по умолчанию заключается в том, что если вы нажмете на вкладку, и эта вкладка содержит навигационный контроллер, вы получите страницу, которая находится над стеком viewcontroller навигационных контроллеров.

Чтобы избежать этого, вы должны использовать popToRootViewController при нажатии на вкладку.

Если вы реализуете

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

это должно сделать свое дело.

Другие вопросы по тегам