UINavigationController TitleView - требуется пояснение

Ладно, есть одна вещь, которую я действительно не понимаю.

У меня есть контроллер навигации (созданный в AppDelegate.m) в качестве первого элемента в контроллере панели вкладок (созданный в AppDelegate.h):

self.tabBarController.viewControllers = @[tabOneNavigationController, viewController2, viewController3, viewController4, viewController5];

В другом классе я обращаюсь к этому tabOneNavigationController с помощью:

AppDelegate *apd = (AppDelegate *) [[UIApplication sharedApplication] delegate];
UINavigationController *navtab1 = [apd.tabBarController.viewControllers objectAtIndex:0];

И если я хочу изменить фон панели навигации navtab1, я пишу:

[navtab1.navigationBar setBackgroundImage:navigationBackgroundImage forBarMetrics:UIBarMetricsDefault]; 

Но для изменения titleView я видел только примеры, использующие:

self.navigationItem.titleView = ...

но как мне изменить titleView в navtab1?

Пример: у меня есть настраиваемый TableViewCell, который содержит кнопку, и при нажатии этой кнопки он должен изменить titeView для navtab1 (в этом случае self, очевидно, не имеет свойства navigationItem.


person Lord Zsolt    schedule 12.07.2013    source источник
comment
Предположительно ячейка таблицы находится на текущем контроллере вида сверху в контроллере навигации (а не на одной из других вкладок)?   -  person Wain    schedule 12.07.2013


Ответы (1)


Вот метод делегирования UINavigationController. Этот код может быть полезен в вашем случае:

#pragma mark -
#pragma mark - UINavigationController Delegate Methods

- (void)navigationController:(UINavigationController *)navigationController  willShowViewController:(UIViewController *)viewController  animated:(BOOL)animated
{
    UINavigationBar *morenavbar = navigationController.navigationBar;
    UINavigationItem *morenavitem = morenavbar.topItem;
    morenavitem.titleView = myCustomeView; // Add Here your custom UIView.
    morenavitem.rightBarButtonItem.tintColor = [UIColor blackColor];

}

В приведенном выше методе вы также помещаете изображение / цвет NavigationBar.

person Community    schedule 12.07.2013