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

时间:2014-11-17 09:53:16

标签: ios objective-c iphone uinavigationcontroller addsubview

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

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

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

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

}

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

3 个答案:

答案 0 :(得分:0)

我认为你需要使用它:

[self.navigationController.navigationBar addSubview:myView];

答案 1 :(得分:0)

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

答案 2 :(得分:0)

原来我是个白痴。这是一个非常简单的范围问题。我在方法中实例化了我的VC的局部变量,当然它最后发布了。一旦我将我的VC分配给一个全局变量,它就开始像魅力一样工作。很简单。