如何将子VC上创建的UIBarButtonItem设置为其父VC的导航控制器?

Kyo*_*ang 3 uinavigationcontroller ios

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

让它发挥作用的正确方法是什么?

以下代码是我在viewDidLoad容器视图控制器中使用的代码。

更新:
我将这里唯一的答案标记为正确的答案。就我的代码而言,@rdelmar 的解释是正确的。但是,我想指出一件事。基本上,如果子级应该在自定义控制器中使用,那么让任何子级 VC 期望导航控制器的存在并不是一个好方法。
如果我能回到过去,我会在容器上制作一些界面,让他们的孩子知道他们可以根据需要设置任何导航项。

[self addChildViewController:childVC];
[self.view addSubview:childVC.view];
[childVC didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

rde*_*mar 5

如果父控制器嵌入在导航控制器中,则该父控制器将具有 navigationItem,而不是子控制器。因此,子项中的 self.navigationItem 将为零。您需要参考父母,

self.parentViewController.navigationItem.rightBarButtonItem = ...
Run Code Online (Sandbox Code Playgroud)

  • 否则你提到的,我发现子视图控制器中的 self.navigationItem 不为零。而且,我不想限制视图控制器应该是任何容器的子级。 (2认同)