Да, это должно быть жестко закодировано.
Если вы используете UITabBarController (я полагаю, вы, вероятно, так оно и есть), вам нужно будет создать его подкласс и переопределить.Это попытается перейти к корневому контроллеру представления каждого контроллера навигации на вкладке.Если корневой вид элемента вкладки не является элементом навигации, вы получите исключение.
@interface MyTabBarControllerSubClass : UITabBarController {
}
@end
@implementation MyTabBarControllerSubClass
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
[super tabBar:tabBar didSelectItem:item];
[(UINavigationController*)self.selectedViewController popToRootViewControllerAnimated:YES];
}
@end
Не забудьте выбрать свой подкласс в IB: -)
Вы можететакже сделать что-то UITabBarControllerDelegate.Хотя это, вероятно, будет сложнее реализовать.