iOS - Проверьте панель навигации - PullRequest
4 голосов
/ 21 февраля 2012

Я создаю библиотеку, которая добавит вид внизу приложения (когда моя библиотека интегрирована в приложение).
Я использую параметр кадра view контроллера вида, чтобы получить размер вида и вычислить кадр вида моей библиотеки в соответствии с ним и показать его.
Проблема в том, что когда есть панель навигации, мой вид все еще находится ниже фактического видимого вида. Итак, я хочу знать, основан ли текущий контроллер представления на контроллере навигации или нет, и отображается ли панель навигации в этом представлении или нет. как я могу найти это?

Ответы [ 2 ]

9 голосов
/ 16 января 2013

Я опаздываю с ответом, но для других людей, которые пытаются сделать то же самое (например, я: D).

Этот код может решить вашу проблему:

id nav = [UIApplication sharedApplication].keyWindow.rootViewController;
if ([nav isKindOfClass:[UINavigationController class]]) {
    UINavigationController *navc = (UINavigationController *) nav;
    if(navc.navigationBarHidden) {
        NSLog(@"NOOOO NAV BAR");
    } else {
        NSLog(@"WE HAVE NAV BAR");
    }
}
2 голосов
/ 21 февраля 2012

UINavigationBar наследует и обладает всеми прекрасными свойствами и поведением UIView, и одно из этих свойств - hidden.

Итак, на ваш взгляд, если вы можете получить указатель на панель навигации, все, что вам нужно сделать, это проверить, является ли hidden YES или NO.


Один из способов сделать это - иметь свойство UINavigationController или аксессор (setter & getter) для вашей библиотеки, чтобы тот, кто использует библиотеку, мог установить контроллер навигации и / или панель от имени вашей библиотеки.

...