【问题标题】:Properly remove view, and add subview正确删除视图,并添加子视图
【发布时间】:2011-10-26 05:29:44
【问题描述】:

我正在尝试添加一个子视图,然后还删除以前的视图。

这是我的代码的样子:

    HowToPlay *LetsPlay = [[HowToPlay alloc] initWithNibName:@"HowToPlay" bundle:nil];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                       forView:[self view]
                         cache:YES];
[UIView commitAnimations];  



MainViewController *ma = [[MainViewController alloc]init];
[ma.view removeFromSuperview];

[self.view addSubview:LetsPlay.view];

Mainviewcontroller 是它当前所在的视图。我希望它关闭该视图,然后继续添加新视图 LetsPlay。

这段代码运行,它加载了一个新视图,但是当我从 LetsPlay 加载另一个视图时,我可以看到 mainviewcontroller 仍在它后面运行。我想永久关闭它。

我什至不确定我是否正确地这样做,所以如果我不能,请给我一个如何正确地做的例子。

谢谢:)

【问题讨论】:

    标签: objective-c ios view subview


    【解决方案1】:

    您的做法不正确:您正在创建 MainViewController(及其关联视图)的 new 实例。然后,您尝试从其父视图中删除这个新创建的视图(称为 instance2),而它甚至还没有被添加到视图中(instance1 有)。这就是为什么您仍然看到 mainviewcontroller。

    相反,您需要掌握当前正在运行/活动的 MainViewController。 IE。您应该保留该视图控制器的引用。然后你可以在它的视图上调用 removeFromSuperview。

    希望这会有所帮助。

    【讨论】:

    • 好的,所以我可以访问位于应用程序委托中的 mainviewcontroller 的原始负载。我现在可以将其从 superview 中删除。现在我如何才能加载新视图?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多