2012-06-28 1 views
0

Если viewController находится в навигационном стеке (вероятно, в верхней части стека),
автоматически ли он имеет self.navigationItem?self.navigationItem доступен в любом классе?

Я продолжаю видеть self.navigationItem и self.navigationController без особого контекста в вопросах и учебниках и задаюсь вопросом, где установлены эти переменные.

  • редактировать

Вау спасибо за быстрые ответы.
Где я должен был бы узнать информацию (о self.navigationItem) в официальном документе?

ответ

1

Да, если его в стеке она есть self.navigationItem, если его не в навигации стека self.navigationItem будет равна всухую

Это свойство определяется в расширении Objective C класса

@interface UIViewController (UINavigationControllerItem) 

его определяет свойства UIViewController, связанные с navigation controller

+0

Спасибо, где в документе так говорится? Является ли это относительно новым дополнением к iOS-библиотеке? (5.0+?) – eugene

+0

Нет, на самом деле это не новое дополнение, его до 4, я думаю, не уверен, что он определен в UINavigationController.h –

0

Да, вы увидите объекты self.navigationItem и self.navigationController, установленные в каждом элементе управления который добавляется в стек навигационного контроллера. Эти свойства устанавливаются после вызова pushViewController:animated или initWithRootViewController:.

0

Они не указаны вами, если вы специально не сообщите об этом. Есть другие свойства, которые не были назначены вами непосредственно, а также, например:

self.tabBarController; 

self.parentViewController; 

Вот почему вы должны проверить, если это nil, прежде чем пытаться получить доступ к собственности.

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