正确删除视图,并添加子视图

时间:2011-08-13 00:03:42

标签: objective-c ios view subview

我尝试添加子视图,然后删除上一个视图。

这是我的代码:

    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仍然在它后面运行。我想永久地解雇它。

我甚至不确定我是否正确地进行此操作,所以如果我不能,请给我一个如何正确执行此操作的示例。

谢谢:)

1 个答案:

答案 0 :(得分:5)

你没有采用正确的方式:你正在创建一个MainViewController的 new 实例(以及它的相关视图)。然后,您尝试从其超级视图中删除这个新创建的视图(称之为instance2),而它甚至尚未添加到视图中(instance1具有)。这就是你仍然看到mainviewcontroller的原因。

相反,您需要保持当前正在运行/活动的MainViewController。即你应该坚持该视图控制器的参考。然后你可以在它的视图上调用removeFromSuperview。

希望这会有所帮助。