Доступ к uinavigationbar из подкласса? - PullRequest
0 голосов
/ 21 мая 2011

У меня есть подкласс, основанный на UIView, и я хочу изменить оттенок панели навигации, но различные методы, которые я пробовал, не сработали.Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 21 мая 2011

Пока представление находится в viewController, который является частью стека навигации, вы можете сделать:

viewController.navigationController.navigationBar.tintColor = [UIColor blackColor];

Чтобы получить доступ к viewController, вы можете объявить идентификатор как ivar в вашем классе View:

id myParentViewController;

Объявите этот идентификатор как свойство, чтобы к нему можно было получить доступ из-за пределов представления.

При создании представления из viewController вы можете передать ссылку на viewController в представление, выполнив:

view.myParentViewController = self;

Где self будет ссылкой на ваш viewController в стеке навигации.

Теперь, когда вы находитесь в представлении, вы можете получить доступ к панели навигации, выполнив следующее:

if([myParentViewController isKindOfClass:[UIViewController class]])
    {
        UIViewController *theParentViewController = (UIViewController*)myParentViewController;
        theParentViewController.navigationController.navigationBar.tintColor = [UIColor blackColor];
    }
1 голос
/ 21 мая 2011

Вы можете получить доступ к UINavigationBar из UINavigationController. Одним из методов является передача UINavigationController или UINavigationBar в качестве параметра UIView. Или UIView может использовать делегат для уведомления внешнего UIViewController о выполнении работ.

...