2

В настоящее время у меня есть подкласс UINavigationController, который имеет следующую функцию viewDidLoad.UINavigationController Subclass navigationItem игнорирование -setLeftBarButtonItem

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"HI" 
                    style:UIBarButtonItemStylePlain 
                    target:self 
                    action:@selector(manage)]; 
    [self.navigationItem setLeftBarButtonItem:leftButton]; 

    [self.navigationBar setBackgroundImage:[[UIImage imageNamed:@"top_nav_bg.png"] stretchableImageWithLeftCapWidth:3.0 topCapHeight:0.0] forBarMetrics:UIBarMetricsDefault]; 

} 

Это UINavigationController подкласс одна из вкладок в подклассе UITabBarBarController со следующим viewDidLoad.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Change some of the look of the main tab bar 
    [self.tabBar setBackgroundImage:[[UIImage imageNamed:@"tab_nav_bg.png"] stretchableImageWithLeftCapWidth:2.0 topCapHeight:0.0]]; 
    [self.tabBar setSelectionIndicatorImage:[[UIImage imageNamed:@"tab_nav_bg_active.png"] stretchableImageWithLeftCapWidth:2.0 topCapHeight:0.0]]; 

    // Load the various view controllers for this view 
    SBHomeViewController *homeViewController = [[SBHomeViewController alloc] init]; 
    [homeViewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tab_home_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_home.png"]]; 
    [homeViewController.tabBarItem setImageInsets:UIEdgeInsetsMake(5.0, 0.0, -5.0, 0.0)]; 

    // The navigation controller that will hold the home view 
    SBMainNavigationViewController *homeNavController = [[SBMainNavigationViewController alloc] initWithRootViewController:homeViewController]; 

    self.viewControllers = @[homeNavController]; 
} 

Все работает нормально. Загружается правильное изображение фона панели навигации из UINavigationController viewDidLoad. Тем не менее, leftBarButtontem не устанавливается вообще. И для чего это стоит, я попытался сделать его rightBarButtonItem, и это тоже не сработало.

Мысли?

ответ

6

Контроллер навигации является контейнером для других видов и хостом навигационной панели. Но он никогда не является частью навигационного стека. Только элементы управления, которые являются частью стека, влияют на элементы панели.

Вместо того чтобы установить элемент кнопки панели в элемент навигации навигационных контроллеров, установите его на элемент навигации контроллеров корневого представления.

+0

Хороший звонок. Я думал, что попробовал ... В любом случае, я переместил UITabBarController в UINavigationController вместо наоборот, потому что это имело больше смысла. – joshholat