Если вы выберете один из ваших UITabBarItems в IB, вы увидите «Просмотр загружен из« YourView »». Нажмите в этот «серый» вид. В окне инспектора вы увидите на вкладке «Атрибуты» (вкладка слева) заголовок и имя NIB, которое будет загружено (назовем его «YourNibName»).
Теперь выберите правую вкладку инспектора (Identity) и измените Classname (Combo рядом с Class) на ваш класс "YourViewController", который вы должны создать в xcode. Не используйте стандартный ViewController, который уже выбран. InterfaceBuilder загружает ваше перо и присоединяет его к вашему ViewController.
Откройте YourNibName и измените класс FilesOwner (инспектор, правая вкладка) на "YourViewController".
NIB вашего TabBar также содержит FilesOwner. Создайте ViewController для этого FilesOwner и установите его Class для этого контроллера (т.е. TabBarController)
В «TabBarController» вы можете узнать, какая вкладка была выбрана с помощью этого кода:
- (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)
}
...
}
Здесь вы можете сделать что-то «глобальное» или преинициализировать что-то. Это одна вещь, которую вы можете сделать.
НАЧАЛО ВАШИХ МНЕНИЙ:
Если вы выберете вкладку и представление (которое обрабатывается 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;
}
если вы не используете nib, используйте вместо него '- (void) loadView {...}'.
Вы используете подкласс контроллера TabBar, возможно, вы можете использовать 'self.selectedIndex = 1;' вместо 'tabBarController.selectedIndex = 1;' и т. д. Просто попробуйте это
Надеюсь, это поможет!