清除子视图时视图混乱
Posted
技术标签:
【中文标题】清除子视图时视图混乱【英文标题】:Views messing up when clearing subviews 【发布时间】:2011-07-26 22:59:50 【问题描述】:我很新,我正在制作一个基本的多视图应用程序,其中按钮可以打开新视图。
编辑:当我制作一个新的、更简单的应用程序时,我遇到了同样的问题,我认为这与删除子视图有关。我制作了另一个简单版本的应用程序,有两个UIViewController
s:MainViewController
和SecondViewController
。 MainView
有工具栏和红色背景,SecondView
有浅蓝色背景。工具栏上的一个按钮使用以下代码删除所有子视图(我认为这是问题所在),然后添加SecondView
作为子视图。
for(UIView *view in self.view.subviews)
[view removeFromSuperview];
运行时,会出现类似的混合问题(见下文)。如果没有此代码,子视图将正确显示。发生了什么事,有没有办法让我删除所有子视图而不触发它?我的目标是有几个按钮,每个按钮打开一个新视图(并关闭所有其他视图)。
原帖:
从应用程序委托,我有根 UIViewController
appViewController
,附加到 appView
笔尖。这个视图只是一个黄色背景,不打算显示。在appViewController
中,我在加载时添加了一个RootViewController
子视图,它控制一个带有红色背景和几个编号按钮的UIView
。两个视图都写了-(BOOL) shouldAutorotateToInterfaceOrientation
,只接受横向方向。
但是,当我运行应用程序时,并没有看到带有按钮的 RootView 的红色背景,而是屏幕的上半部分是红色的,而下半部分是带有按钮的黄色,好像这两个 UIViews
不知何故混合。此外,按钮不起作用,甚至不显示蓝色按钮按下的图形效果。发生了什么事?
编辑:根据要求:RootViewController
的源代码以下是appViewController
:
- (void)viewDidLoad
rootViewController = [[RootViewController alloc] initWithNibName:@"RootView" bundle:nil];
[self.view addSubview:rootViewController.view];
self.rootViewController.appViewController = self;
【问题讨论】:
你能发布你用来添加RootViewController
子类的源代码吗?
抱歉耽搁了。源代码现已发布。
该代码实际上并没有显示您正在添加控制器的视图,但听起来您正在嵌套多个 UIViewController 类的视图,这不是 UIViewController 的预期用途。见developer.apple.com/library/ios/featuredarticles/…
哦,我明白了,我看错了评论。我已经重新编辑了添加视图。我知道我通过让 rootViewController 引用 appViewController 来做一些奇怪的事情,但我不知道如何在按下按钮时完全改变显示。
【参考方案1】:
在黑暗中拍摄,但也许:
[自行配置视图]
【讨论】:
...在 UIViewController 或 API 的其他任何地方都没有这样的方法。 “在黑暗中射击”是一回事,完全盲目射击是另一回事。以上是关于清除子视图时视图混乱的主要内容,如果未能解决你的问题,请参考以下文章