【问题标题】:How to set UIBarButtonItem created by a child view controller to a parent view contoller's UINavigationController?如何将子视图控制器创建的 UIBarButtonItem 设置为父视图控制器的 UINavigationController?
【发布时间】:2015-01-02 13:20:16
【问题描述】:

我创建了一个自定义容器视图控制器。它有两个子视图控制器。他们将 UIBarButtonItem 的一个实例设置为 self.navigationItem.rightBarButtonItem 以在导航栏上显示按钮。但是,什么都没有显示。

为什么导航栏上不显示子视图控制器创建的 UIBarButtonItem 实例?

以下代码放在容器视图控制器的viewDidLoad中。

[self addChildViewController:childVC];
[self.view addSubview:childVC.view];
[childVC didMoveToParentViewController:self];

【问题讨论】:

  • 导航控制器只查看其直接子视图控制器的导航项,根据您的描述,它听起来像容器。您需要设计一些机制来将对容器子项的 navigationItem 的更改转发到容器的 navigationItem。
  • 你找到答案了吗?我面临着类似的问题。是的,导航项不是零。
  • 同样的问题 :( 到目前为止没有解决方案?

标签: ios uinavigationcontroller


【解决方案1】:

如果父控制器嵌入在导航控制器中,则该父控制器将具有导航项,而不是子控制器。因此,孩子中的 self.navigationItem 将为 nil。您需要引用父级,

self.parentViewController.navigationItem.rightBarButtonItem = ...

【讨论】:

  • 否则你提到,我发现子视图控制器中的self.navigationItem不是nil。而且,我不想限制视图控制器应该是任何容器的子级。
  • self.navigationItem 在子视图控制器中不为零。
  • 它不是 nil,因为正如文档所述,“第一次访问该属性时,会创建 UINavigationItem 对象。因此,如果您不使用导航控制器来访问该属性,则不应访问该属性。显示视图控制器。”虽然它是创建的,但它并没有连接到 NavigationBar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
相关资源
最近更新 更多