navigationController.navigationItem vs navigationItem

我只是一个虾纸丫 提交于 2019-11-27 23:28:47

The class UIViewController has a property navigationItem.

This is true of all the subclasses too whether it is a UICollectionViewController, UITableViewController, UINavigationViewController or any custom subclass.

When presented by a UINavigationController the nav controller will create this property and so each view controller gets its own navigationItem. If you do not present it from a navigation controller then the navigationItem is nil.

Now, with a UINavigationController you are more than likely using this as your initial view controller. Therefore, the navigation controller is NOT being presented by another navigation controller and its navigationItem property is nil.

The navigation bar is slightly different as this is managed the other way around.

although set can set this property of a navigation controller: self.navigationController.navigationItem = .. but it won't work. Mainly because the navigationItem is a UIViewController's property. You can access the property because UINavigationController is inherited from UIViewController. this property is meant for any view controller that is added into a navigation controller to have a navigation bar created for them. Normally a UINavigationController won't be put into another navigation controller, so set this property of a navigation controller normally makes no sense.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!