navigationController.navigationItem vs navigationItem
只是好奇,为什么设置self.navigationItem = ...
工作,但self.navigationController.navigationItem
失败? 这同样适用于self.toolbarItems
vs self.navigationController.toobarItems
。
何时使用self.navigationController.navigationItem
?
也许你会说,他们指的是不同的东西。 但为什么self.navigationController.navigationBarHidden = YES
导航栏被隐藏。 是不是意味着self.navigationController.navigationItem
指向我想要的酒吧?
UIViewController
类有一个属性navigationItem
。
无论是UICollectionViewController
, UITableViewController
, UINavigationViewController
还是任何自定义子类,所有子类都是如此。
当由UINavigationController
呈现时,nav控制器将创建此属性,因此每个视图控制器都会获得自己的navigationItem
。 如果您不从导航控制器显示它,那么navigationItem为零。
现在,使用UINavigationController
您很可能将其用作初始视图控制器。 因此,导航控制器不会被另一个导航控制器呈现,其navigationItem
属性为nil。
导航栏略有不同,因为这是相反的管理方式。
虽然set可以设置导航控制器的这个属性: self.navigationController.navigationItem = ..
但它不起作用。 主要是因为navigationItem是UIViewController的属性。 您可以访问该属性,因为UINavigationControllerinheritance自UIViewController。 此属性适用于添加到导航控制器中的任何视图控制器,以便为其创建导航栏。 通常情况下,UINavigationController不会被放入另一个导航控制器,因此设置导航控制器的这个属性通常是没有意义的。