Если вы выберете один из ваших UITabBarItems в IB, вы увидите «Просмотр загружен из« YourView ». Нажмите на этот «серый» вид. В окне «Инспектор» вы увидите вкладку «Атрибуты» (вкладка слева) название и имя NIB, которое будет загружено (позволяет называть его «YourNibName»).
Теперь выберите нужную вкладку инспектора (Identity) и измените имя класса (Combo рядом с классом) на свой класс «YourViewController», который вы должны создать в xcode. Не используйте стандартный ViewController, который уже выбран. InterfaceBuilder загружает ваш наконечник и прикрепляет его к вашему ViewController.
Откройте ваше имяNNNName и измените класс FileOwner (инспектор, правая вкладка) на «YourViewController».
В вашей NIB-панели TabBar также есть FilesOwner. Создание ViewController для этого FilesOwner и установить его класс в этом контроллере (т.е. TabBarController)
В «TabBarController» вы можете узнать, какие Tab был выбран с помощью этого кода:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
if ([viewController.nibName isEqualToString:@"NIBName1"]){
// Do something here, if you like. (i.e. Save the state in a string or int)
}
if ([viewController.nibName isEqualToString:@"NIBNAme2"]){
// Do something here, if you like. (i.e. Save the state in a string or int)
}
...
}
Здесь вы можете сделать что-то «глобально» или пренициализировать что-то. Это ОДНА вещь, которую вы можете сделать.
INIT ВАШИХ МНЕНИЙ:
При выборе вкладки и вид (который обрабатывается YourViewController) будут показаны впервые, «viewDidLoad» будет называться в «YourViewController»
- (void)viewDidLoad {
// Here you can add views programatically
[self.view addSubview:myNavigationController.view];
[self.view bringSubviewToFront:myNavigationController.view];
// And if you like, do some INIT here
[super viewDidLoad];
}
Надеюсь, это ваш вопрос.
Теперь что-то о значке. Это взломать, но отлично работает для меня.
Заголовок файла:
Добавить выход к контроллеру, который, представляющий ваш TabBarController:
@interface yourController : UIViewController <UITabBarControllerDelegate> {
UITabBarController *tabBarController;
}
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
Подключите этот выход в IB с TabBar.
Реализация:
В вашем TabBarControllerClass вы можете перезаписать 'initWithNibName':
@synthesize tabBarController;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Do some init here
// select your desired item (it will be loaded)
// then you can assign the badge
tabBarController.selectedIndex = 1;
tabBarController.selectedViewController.tabBarItem.badgeValue = @"222";
// and select the item you will start with
tabBarController.selectedIndex = 0;
// if you like you can add a notification, which you can activate from anywhere else
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(itemBadgeChanged:)
name:@"itemBadgeChangedNotification"
object:nil];
}
return self;
}
, если вы не используете перо, используйте '- (Недействительными) loadView {...}' вместо этого. Вы используете подкласс контроллера TabBar, возможно, вы можете использовать 'self.selectedIndex = 1;' вместо 'tabBarController.selectedIndex = 1;' и т. д. Попробуйте это
Надеюсь, это поможет!
Как вы инициализируете контроллеры табличного представления, когда добавляете их в стек UINavigationController? Кроме того, вы попробовали viewWillLoad:? –
Контроллер таблицы не инициализирован мной. Все подключено в IB, где я указываю контроллеру панели вкладок, что «Tab1» будет NavigationController и загрузит его представление из «MyView» (отдельный файл NIB). Помещение его в viewWillLoad не сработало либо к сожалению (я предполагаю, что это вызвано непосредственно перед вызовом viewDidLoad) –