如何正确切换视图?

时间:2010-07-14 11:00:10

标签: iphone uiview uinavigationcontroller switching modalviewcontroller

我知道它已经在互联网上分配了相关的信息,但我是编程的新手并且有点困惑,我需要一点帮助...例如我有10个视图控制器并在它之间用按钮切换我转换

    -(IBAction)goToSecondView:(id)sender {

 SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
 [self presentModalViewController:secondView animated:NO];
 [secondView release];
    }
   /* or */


-(IBAction)goToSecondView:(id)sender {

SecondViewController *secondView = [[SecondViewController alloc]
initWithNibName:@"SecondViewController" bundle:nil]; [self.view addSubview:secondView.view];
[secondView release];
}

并在需要之后如果我切换到删除第一个视图:

[self.view removeFromSuperview]; /* or */ [self dismissModalViewControllerAnimated:YES];

并且我不知道当我切换到第二个时如何删除第一个视图,例如当从 FirstView 转到 SecondView 第二个视图时,需要删除 FirstView ,在 SecondView 之后转到 ThridView SevenView 示例,需要删除 SecondView ...我该怎么做?你能做一个示例代码吗?我知道这很容易但不适合我,我是编程新手

--------------------更新-------------------------- ---------------------------------------

我想制作类似>的东西here<但我不明白所有,请问任何人都可以制作示例代码吗?。

非常感谢

2 个答案:

答案 0 :(得分:0)

您使用哪种方法(或者您应该使用其他方法)完全取决于您要实现的目标。

如果有一个视图列出了所有其他视图,并且您想要做的就是在第一个视图和另一个视图之间来回,那么presentModalViewController:otherView方法就可以了。如果您将其他视图添加为第一个视图的子视图并完全覆盖它,那么这不是最好的方法。您应该将其他视图添加为窗口的子视图(或其他视图父视图),然后使用[theView removeFromSuperview]从窗口/父视图中删除该视图;

如果你有一个层次结构,即你可以从第一个视图到第二个视图,从第一个视图到第三个视图,那么你应该看一下使用UINavigationController。每次你想要显示一个新的视图时,你将它推到UINavigationController的堆栈上,然后返回一个你弹出它的关卡(如果你使用带有后退按钮的默认导航栏,这将为你照顾)。在这种情况下,您不必处理删除看不见的视图并在需要时重新创建它们,这些都由UINavigationController处理。

答案 1 :(得分:0)

另请注意,您无需始终“删除”观看次数。你可以隐藏它们。

[self.view setHidden:YES]

这只会让他们不被画出来。这很方便,因为removeFromSuperview实际上会从内存中释放视图,除非它被保留,这意味着你永远不会得到它。