навигационный контроллер.navigationItem vs navigationItem
Просто любопытно, почему установка self.navigationItem = ... работает, но self.navigationController.navigationItem терпит неудачу? То же самое относится и к self.toolbarItems vs self.navigationController.toobarItems.
Когда использовать self.navigationController.navigationItem?
self.navigationController.navigationBarHidden = YES панель навигации скрыта. разве это не означает self.navigationController.navigationItem указать на бар, который я хотел?2 ответа:
Класс
UIViewControllerобладает свойствомnavigationItem.Это справедливо и для всех подклассов, будь то
UICollectionViewController,UITableViewController,UINavigationViewControllerили любой пользовательский подкласс.При представлении
UINavigationControllerнавигационный контроллер создает это свойство, и поэтому каждый контроллер вида получает свой собственныйnavigationItem. Если вы не представляете его от навигационного контроллера, то navigationItem равен нулю.Теперь, с
UINavigationControllerвы, скорее всего, используете его в качестве начального контроллера вида. Следовательно, навигация контроллер не представлен другим навигационным контроллером, и его свойствоnavigationItemравно нулю.Панель навигации немного отличается, так как она управляется наоборот.
Хотя set может задать это свойство навигационного контроллера:
self.navigationController.navigationItem = .., но оно не будет работать. Главным образом потому, что navigationItem является свойством UIViewController. Вы можете получить доступ к этому свойству, так как UINavigationController наследуется от UIViewController. это свойство предназначено для любого контроллера вида, который добавляется в навигационный контроллер, чтобы иметь панель навигации, созданную для них. Обычно UINavigationController не помещается в другой навигационный контроллер, поэтому установите это свойство навигационный контроллер обычно не имеет смысла.