В результате моего исследования вы не можете добавить UITabBarItem в UITabBar, который управляется UITabBarController.
Поскольку вы, возможно, добавили свой UITabBarItem, добавив список контроллера представления, это также ваш выбор для добавления дополнительных пользовательских UITabBarItem, как я покажу сейчас:
Предварительные условия: Как я уже упоминал ранее, вы, возможно, добавили свои UITabBarItems, добавив список контроллера представления:
tabbarController = [[UITabBarController alloc] init]; // tabbarController has to be defined in your header file
FirstViewController *vc1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:[NSBundle mainBundle]];
vc1.tabBarItem.title = @"First View Controller"; // Let the controller manage the UITabBarItem
SecondViewController *vc2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
vc2.tabBarItem.title = @"Second View Controller";
[tabbarController setViewControllers:[NSArray arrayWithObjects: vc1, vc2, nil]];
tabbarController.delegate = self; // do not forget to delegate events to our appdelegate
Добавление пользовательских UITabBarItems: Теперь, когда вы знаете, какчтобы добавить UITabBarItems через добавление контроллера представления, вы также можете использовать тот же способ для добавления пользовательских UITabBarItems:
UIViewController *tmpController = [[UIViewController alloc] init];
tmpController.tabBarItem.title = @"Custom TabBar Item";
// You could also add your custom image:
// tmpController.tabBarItem.image = [UIImage alloc];
// Define a custom tag (integers or enums only), so you can identify when it gets tapped:
tmpController.tabBarItem.tag = 1;
Изменить строку выше:
[tabbarController setViewControllers:[NSArray arrayWithObjects: vc1, vc2, tmpController, nil]];
[tmpController release]; // do not forget to release the tmpController after adding to the list
Все хорошо, теперь у вас естьпользовательская кнопка в вашем TabBar.
Как насчет обработки событий этого пользовательского UITabBarItem?
Это просто, смотрите:
Добавьте UITabBarControllerDelegate к вашему AppDelegateclass (или класс, который содержит tabbarController).
@interface YourAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { }
Подгоните определение протокола, добавив эту функцию:
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
UITabBarItem *item = [theTabBarController.tabBar.items objectAtIndex:indexOfTab];
NSLog(@"Tab index = %u (%u), itemtag: %d", indexOfTab, item.tag);
switch (item.tag) {
case 1:
// Do your stuff
break;
default:
break;
}
}
Теперь у вас есть все, что вам нужно для созданияели и обрабатывали пользовательские UITabBarItems.Надеюсь это поможет.Веселитесь ....