iPhone добавляет кнопку на панель навигации, созданную, когда пользователь выбирает вкладку в moreNavigationController

Моя панель вкладок имеет десять вкладок. Поэтому шесть из них помещаются на вкладку «Дополнительно». Некоторые из них не имеют UINavigationControllers. То есть вкладка управляется подклассом UIViewController, который не является контроллером навигации.

Когда пользователь выбирает один из них, появляется соответствующий контроллер представления с UINavigationBar вверху.

Я хочу добавить кнопку на эту панель навигации. Как я могу это сделать?

Спасибо.


person William Jockusch    schedule 24.07.2010    source источник


Ответы (2)


Что ж, если вы хотите сделать это программно, я бы предложил заменить каждый из ваших контроллеров представления в вашем UITabBar на UINavigationControllers, в которых размещены соответствующие контроллеры представления.

Итак, ваш старый код выглядит примерно так:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  UITabBarController *tbc = [[[UITabBarController alloc]init]autorelease];
  [window addSubview:tbc.view];
  UIViewController *mapVC = [[[UIViewController alloc] init]autorelease];
  NSArray *tabViewControllerArray = [NSArray arrayWithObjects:self.mapVC, nil];
  tbc.viewControllers = tabViewControllerArray;
}

Новый код должен быть:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  UITabBarController *tbc = [[[UITabBarController alloc]init]autorelease];
  [window addSubview:tbc.view];
  UIViewController *mapVC = [[[UIViewController alloc] init]autorelease];
  // add the viewController to a UINavigationController
  UINavigationController *mapNav = [[[UINavigationController alloc] initWithRootViewController:mapVC]autorelease];
  // put the nav controller in the array instead
  NSArray *tabViewControllerArray = [NSArray arrayWithObjects:mapNav, nil];
  tbc.viewControllers = tabViewControllerArray;

  // this code adds a right button to the mapBav navigationBar
  // this uses a custom view, but you could use a standard UIBarButtonItem too 
  NSArray *items = [NSArray arrayWithObjects: [UIImage imageNamed:@"flag-icon.png"], nil];
  UISegmentedControl *tableControl = [[[UISegmentedControl alloc] initWithItems:items]autorelease];
  tableControl.segmentedControlStyle = UISegmentedControlStyleBar;
  UIBarButtonItem *segmentBarItem = [[[UIBarButtonItem alloc] initWithCustomView:tableControl] autorelease];
  self.navigationItem.rightBarButtonItem = segmentBarItem;
}
person Andrew Johnson    schedule 24.07.2010

Есть два способа сделать это.

  1. Просто используйте UINavigationController для каждой вкладки с вашим контроллером представления. Но похоже, что вы не хотите этого делать, поэтому:

  2. Поместите UINavigationBar с помощью Interface Builder. http://cl.ly/395fb8c0a9e9df781897/content
    Затем вы можете перетащить элементы UIBarButtonItems и настроить их по своему вкусу, в том числе и в ИБ. http://cl.ly/7501d3e8e5d57dac5e00/content

person jtbandes    schedule 24.07.2010