当添加为NavigationController视图的子视图时,iOS视图不显示其任何子视图

当添加为NavigationController视图的子视图时,iOS视图不显示其任何子视图,ios,objective-c,iphone,uinavigationcontroller,addsubview,Ios,Objective C,Iphone,Uinavigationcontroller,Addsubview,我有一个NavigationController,我想创建一个视图,从屏幕顶部开始设置自身动画,并位于navigationBar上方。我正在从xib初始化viewcontroller,当我将其添加为[self.view addSubview:myView]时,它可以完美地工作,但它位于导航栏下方。当我尝试将其添加为[self.navigationController.view addSubview:myView]时;它按预期将其放置在navigationBar的顶部,但view不显示任何放置在x

我有一个NavigationController,我想创建一个视图,从屏幕顶部开始设置自身动画,并位于navigationBar上方。我正在从xib初始化viewcontroller,当我将其添加为[self.view addSubview:myView]时,它可以完美地工作,但它位于导航栏下方。当我尝试将其添加为[self.navigationController.view addSubview:myView]时;它按预期将其放置在navigationBar的顶部,但view不显示任何放置在xib中的子视图。我不明白为什么会发生这种情况,我已经试着解决这个问题好几个小时了

更新 来自xib的自定义视图与自定义ViewController类配对,我在其中添加了以下代码:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

NSLog(@"!!! %i", [self.view.subviews count]);

}

如果我将myView添加到self.view,它会打印1,实际上有1个子视图,但当我将其添加为self.navigationController.view时,甚至不会调用ViewDidDisplay。但它确实出现在屏幕上,没有子视图。现在我更困惑了。

我想你需要用这个:


[self.navigationController.navigationBar addSubview:myView]

如果不需要导航控制器,为什么不直接卸下它?另一种方法是隐藏导航栏,以便视图占据全部空间,然后在需要时再次显示导航栏。
如果您提供一些视图代码,我可以提供更多帮助。

事实证明我是个白痴。这是一个非常简单的范围问题。我在方法中实例化了我的VC的一个局部变量,当然它在最后被释放了。当我把我的VC分配给一个全局变量时,所有的变量都开始工作了。很简单。

不,仍然没有子视图。您确定添加了所需的视图吗?可能它没有子视图?尝试检查myView.subviews.count我确定,因为当我将此行更改为[self.view addSubview:myView]时;子视图按预期显示。这对我来说真的很奇怪。实际上我试着做计数的事情,它在两种情况下都打印0,即使子视图实际显示。我很困惑,可能是。。。您的内容显示在其他视图中,当您在添加到另一个视图时将其删除时,您可以让他们绘制,只需尝试[myView removeFromSuperview];这确实是一个解决办法。这里的问题是,我有一个视图,它是navigationController.view的子视图,位于navigationBar的下面,将其视为navigationBar的背景,它比导航栏本身大,我还必须将其隐藏。第二个问题是动画不会那么平滑。在我的情况下,将视图放在navigationController视图的顶部将是一个更好的解决方案。