2014-11-17 33 views
0

我有一个NavigationController,并且我想要从屏幕顶部制作一个视图,并且坐在上方navigationBar上方。我从xib初始化视图控制器,当我将它添加为[self.view addSubview:myView];时,它完美地工作,但它位于导航栏下方。当我尝试将其添加为[self.navigationController.view addSubview:myView];时,它会按照预期将其放置在navigationBar的顶部,但视图不会显示放置在xib中的任何子视图。我不明白为什么会发生这种情况,一直试图解决这个问题好几个小时。当作为NavigationController的视图的子视图添加时,iOS视图不显示它的任何子视图

UPDATE 从厦门国际银行我的自定义视图是搭配定制的视图控制器类,我在里面加入以下代码:

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

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

} 

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

回答

0

原来我是个白痴。这是一个非常简单的范围问题。我在方法内部实例化了一个VC的局部变量,当然它在最后被释放。只要我将VC分配给全局变量,所有人都开始像魅力一样工作。那样容易。

0

我认为你需要使用:

[self.navigationController.navigationBar addSubview:MyView的]。

+0

不,仍然没有子视图。 – NKorotkov

+0

你确定,你添加完全需要的视图?可能它没有子视图?尝试检查myView.subviews.count – mityaika07

+0

我敢肯定,因为当我将此行更改为'[self.view addSubview:myView];'子视图按预期显示。我真的很奇怪。 – NKorotkov

0

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

+0

这确实是一个解决方案。这里的问题是,我有一个视图,它是navigationController.view的子视图,并位于navigationBar下方(将其视为navigationBar的背景,比bar本身更大),我也必须隐藏它。第二个问题是动画不会那么流畅。在我的情况下,放置navigationController视图顶部的视图会是更好的解决方案。 – NKorotkov

相关问题