Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将子视图控制器创建的UIBarButtonim设置为父视图控制器';你的导航控制器是什么?_Ios_Uinavigationcontroller - Fatal编程技术网

Ios 如何将子视图控制器创建的UIBarButtonim设置为父视图控制器';你的导航控制器是什么?

Ios 如何将子视图控制器创建的UIBarButtonim设置为父视图控制器';你的导航控制器是什么?,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我创建了一个自定义容器视图控制器。它有两个子视图控制器。他们将uiBarButtonim的实例设置为self.navigationItem.RightBarButtonim,以显示导航栏上的按钮。但是,没有显示任何内容 为什么导航栏上没有显示子视图控制器生成的UIBarButtonItem实例 以下代码放置在容器视图控制器的viewDidLoad中 [self addChildViewController:childVC]; [self.view addSubview:childVC.view]

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

为什么导航栏上没有显示子视图控制器生成的UIBarButtonItem实例

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

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

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

self.parentViewController.navigationItem.rightBarButtonItem = ...

导航控制器只查看其直接子视图控制器的导航项,根据您的描述,它听起来像容器。您需要设计一些机制,将对容器子项的navigationItem的更改转发到容器的navigationItem。找到答案了吗?我也面临着类似的问题。是的,导航项不是零。这里有相同的问题:(到目前为止还没有解决方案?否则,您提到,我发现子视图控制器中的self.navigationItem不是nil。而且,我不想限制视图控制器应该是任何容器的子级。子视图控制器中的self.navigationItem不是nil。它不是nil,因为正如文档所提到的,第一次访问属性时,将创建UINavigationItem对象。因此,如果不使用导航控制器来显示视图控制器,则不应访问此属性。虽然创建了此属性,但它未连接到导航栏。