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.

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,

Другие вопросы по тегам