Выдвиньте другой контроллер представления в представление UITabBarController - PullRequest
7 голосов
/ 09 сентября 2011

Для навигации в моем приложении я использую UITabBarController.Это работает нормально, но в одном из моих контроллеров представления я хочу вставить другой контроллер представления в представление панели вкладок.Другими словами, я хочу заменить выбранный viewcontroller другим.Я делаю это с помощью следующего кода:

self.tabBarController.selectedViewController = self.otherViewController;

Список viewController в моем TabBarController не содержит otherViewController.Этот трюк отлично работает в IOS 4.3, но IOS 5 не нравится.

Кто-нибудь знает решение, принятое IOS 5?

Ответы [ 2 ]

12 голосов
/ 09 сентября 2011

Вы хотите ЗАМЕНИТЬ тот контроллер представления в панели вкладок другим Контроллер представления? Если это так, вы должны отредактировать свойство viewControllers на панели вкладок, установив новое. Это было бы что-то вроде:

UIViewController *thisIsTheViewControllerIWantToSetNow;
int indexForViewControllerYouWantToReplace;

NSMutableArray *tabbarViewControllers = [self.tabbar.viewControllers mutableCopy];

[tabbarViewControllers replaceObjectAtIndex:indexForViewControllerYouWantToReplace withObject:thisIsTheViewControllerIWantToSetNow];

self.tabbar.viewControllers = tabbarViewControllers;

[tabbarViewControllers release];
0 голосов
/ 09 сентября 2011

Вы не можете просто использовать навигационный контроллер или подобное на этой вкладке?

В любом случае это должно работать:

NSMutableArray *controllers = [NSMutableArray arrayWithArray:rootTabBarController.viewControllers];
[controllers replaceObjectAtIndex:rootTabBarController.selectedIndex withObject: newController];
rootTabBarController.viewControllers = controllers;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...