Добавление дополнительного UITabbarItem в UITabbarController - PullRequest
0 голосов
/ 29 января 2011

Мне интересно, есть ли способ добавить дополнительно UITabBarItem к моему существующему UITabBarController. Это не должно быть во время выполнения.

Все, что я хочу сделать - при нажатии этой кнопки я хочу presentModalViewController: поверх моего фактически видимого ViewController, который должен быть TabBarController или его контроллерами.

Надеюсь, это достаточно ясно, если нет, не стесняйтесь спрашивать.

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

В результате моего исследования вы не можете добавить 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.Надеюсь это поможет.Веселитесь ....

0 голосов
/ 29 января 2011

Откройте свойство tabBar - вашего UITabBarController ( ссылка ), получите массив элементов со свойством items - ( ссылка ), добавьте новый UITabBarItem в этот массив и используйте метод setItems:animated: - tabBar для обновления панели вкладок. Добавьте действие в эту панель вкладок для отображения модального контроллера вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...