【问题标题】:How to correctly switch view?如何正确切换视图?
【发布时间】:2011-03-15 19:09:07
【问题描述】:

我知道它已经在互联网上分配了有关该信息的信息,但我是编程新手,有点困惑,我需要一点帮助...例如,我有 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 转到 ThridViewSevenView 示例并且需要删除 SecondView... 我该怎么做?你能做一个示例代码吗?我知道这很容易,但对我来说不是,我是编程新手

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

我想做类似> here

非常感谢您

【问题讨论】:

    标签: iphone uiview uinavigationcontroller switching modalviewcontroller


    【解决方案1】:

    您使用哪种方法(或者是否应该使用另一种方法)完全取决于您要达到的目标。

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

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

    【讨论】:

    • 我想做这样的事情,但我不知道如何使它正确 SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; [自我presentModalViewController:secondView动画:NO]; [FirstViewControllerdismissModalViewControllerAnimated:YES]; //切换到另一个视图时关闭当前视图
    • 当我切换到另一个视图时关闭当前视图,例如,首先我从 FirstView 转到 SecondView,然后我从 SecondView 转到 FiveView,然后再转到 SecondView,我不知道如何让它关闭切换到另一个视图时的当前视图
    • 如果你是这样做的,那么你不必自己关闭视图,操作系统会确保不可见的视图不会浪费更多的空间需要。
    【解决方案2】:

    还请记住,您不必总是“删除”视图。您可以改为隐藏它们。

    [self.view setHidden:YES]

    这只会使它们不被绘制。这很方便,因为 removeFromSuperview 实际上会从内存中释放视图,除非它被保留,这意味着你永远无法取回它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多