清除子视图时视图混乱

Posted

技术标签:

【中文标题】清除子视图时视图混乱【英文标题】:Views messing up when clearing subviews 【发布时间】:2011-07-26 22:59:50 【问题描述】:

我很新,我正在制作一个基本的多视图应用程序,其中按钮可以打开新视图。

编辑:当我制作一个新的、更简单的应用程序时,我遇到了同样的问题,我认为这与删除子视图有关。我制作了另一个简单版本的应用程序,有两个UIViewControllers:MainViewControllerSecondViewControllerMainView 有工具栏和红色背景,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 的其他任何地方都没有这样的方法。 “在黑暗中射击”是一回事,完全盲目射击是另一回事。

以上是关于清除子视图时视图混乱的主要内容,如果未能解决你的问题,请参考以下文章

过滤列表视图后的项目混乱

iPhone横向应用程序视图轴混乱

Autodesk Forge 混乱的视图

片段之间的共享数据(父列表视图和子列表视图)

UIView 子视图不会改变方向

NSScrollView 混乱