只是好奇,为什么设置self.navigationItem = ...可以,但是self.navigationController.navigationItem失败了?同样的道理也适用于self.toolbarItems和self.navigationController.toobarItems。
何时使用self.navigationController.navigationItem
也许你会说,它们指向不同的东西。但是为什么self.navigationController.navigationBarHidden = YES导航栏是隐藏的。这不是意味着self.navigationController.navigationItem指向了我想要的酒吧吗?
发布于 2013-06-04 16:48:39
类UIViewController有一个属性navigationItem。
无论是UICollectionViewController、UITableViewController、UINavigationViewController还是任何自定义子类,所有的子类都是如此。
当由UINavigationController提供时,nav控制器将创建此属性,因此每个视图控制器都有自己的navigationItem。如果您不从导航控制器中显示它,则navigationItem为空。
现在,对于UINavigationController,您很可能将其用作初始视图控制器。因此,导航控制器不是由另一个导航控制器提供的,并且它的navigationItem属性为nil。
导航栏略有不同,因为这是以另一种方式管理的。
发布于 2017-06-04 13:03:01
虽然set可以设置导航控制器的这个属性:self.navigationController.navigationItem = ..,但它不会工作。主要是因为navigationItem是UIViewController的属性。因为UINavigationController是从UIViewController继承的,所以可以访问该属性。此属性用于添加到导航控制器中的任何视图控制器,以便为其创建导航栏。通常情况下,UINavigationController不会被放入另一个导航控制器中,因此设置导航控制器的此属性通常没有意义。
https://stackoverflow.com/questions/16913332
复制相似问题