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

无论是UICollectionViewControllerUITableViewControllerUINavigationViewController还是任何自定义子类,所有子类都是如此。

当由UINavigationController呈现时,nav控制器将创建此属性,因此每个视图控制器都会获得自己的navigationItem 。 如果您不从导航控制器显示它,那么navigationItem为零。

现在,使用UINavigationController您很可能将其用作初始视图控制器。 因此,导航控制器不会被另一个导航控制器呈现,其navigationItem属性为nil。

导航栏略有不同,因为这是相反的管理方式。

虽然set可以设置导航控制器的这个属性: self.navigationController.navigationItem = ..但它不起作用。 主要是因为navigationItem是UIViewController的属性。 您可以访问该属性,因为UINavigationControllerinheritance自UIViewController。 此属性适用于添加到导航控制器中的任何视图控制器,以便为其创建导航栏。 通常情况下,UINavigationController不会被放入另一个导航控制器,因此设置导航控制器的这个属性通常是没有意义的。

Interesting Posts