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
,