2012-05-24 3 views
0

Я пытаюсь настроить панель навигации в приложении для iPhone. Я пытался использовать подкласс навигационной панели и использовать метод subviews layout для фактического управления просмотрами, которые мне нужны. Прямо сейчас, я получаю список subviews, но я понятия не имею, как определить, какой subview является барбетом или который является заголовком. Все, что я вижу в их описании, это то, что это UINavigationItem и другая дополнительная информация. Нужна помощь!Обнаружение UINavigationBar Subviews Тип приложения iPhone

Спасибо!

+0

начать добавлять код используется для обнаружения подвидов ... – meronix

+0

его простой подход получения подвидов и перебора массива, чтобы добраться до моего конкретной точки зрения: for (id view in self.subviews) { if ([view isKindOfClass:[UIBarButtonItem class]]) { } } Но мне нужно, чтобы проверить вид для заголовка, установив название viewcontroller, а не название. Спасибо! –

ответ

2
for (id view in self.subviews) { 
    if ([view isKindOfClass:[UIBarButtonItem class]]) { 
     // subview is UIBarButtonItem 
    } 
    // etc... 
} 

Если цель состоит в том, чтобы манипулировать размер заголовка, я думаю, вы должны вместо этого установить titleView из UINavigationItem. Это необходимо сделать в UIViewController, который вы нажимаете на ваш UINavigationController.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Play around with the frame of the UILabel to 
    // achieve the effect you are going for 
    UILabel *label = [[UILabel alloc] initWithFrame:self.navigationItem.titleView.frame]; 
    label.text = @"Title text"; 
    label.font = [UIFont fontWithName:@"Oblik-Bold" size:18]; 
    label.backgroundColor = [UIColor clearColor]; 
    [label sizeToFit]; 
    self.navigationItem.titleView = label; 
} 

Если вы не хотите делать это в каждом UIViewController вы могли бы сделать базовый класс, который реализует функцию и все ваши UIViewController s наследовать имущество.

+1

+1, я собирался ответить тем же :) – Garoal

+0

Спасибо за ответы. Он работает хорошо для BarButtonItem, но что, если я хочу проверить другие подзаголовки, такие как заголовок? По-видимому, из того, что я видел, и я не эксперт, когда вы устанавливаете заголовок на панель навигации, он не может быть обнаружен, но можно определить привязку метки к заголовку. Каким должно быть это возможное решение? –

+0

Мне не удалось найти, где вы можете получить доступ к заголовку навигационной панели. UINavigationItems, о которых вы говорите, не являются элементами интерфейса, а скорее тем, что у вас есть в вашем стеке навигации. Какова ваша цель для подкласса? Существуют довольно сложные возможности для настройки UINavigationBar без подкласса. –

Смежные вопросы