如何换出视图

时间:2012-01-17 05:38:45

标签: objective-c ios

我正在尝试将一个非常简单的iPhone应用程序与两个可见视图拼凑在一起。

我有一个RootViewController,一个View1Controller和一个View2Controller。在我的RootViewController中,我有一个按钮,可以将一个视图切换到另一个视图。看起来像......

- (IBAction)flipView:(id)sender
{
    if (self.view2Controller.view.superview == nil)
    {
        if (self.view2Controller == nil)
        {
            self.view2Controller = [[View2Controller alloc] initWithNibName:@"View2Controller" bundle:nil];
        }
        [view1Controller.view removeFromSuperview];
        [self.view insertSubview:self.view2Controller.view atIndex:0];
    }
    else
    {
        if (self.view1Controller == nil)
        {
            self.view1Controller = [[View1Controller alloc] initWithNibName:@"View1Controller" bundle:nil];
        }
        [view2Controller.view removeFromSuperview];
        [self.view insertSubview:self.view1Controller.view atIndex:0];

    }
}

这很有效。 RootView中的按钮命中此方法并将视图交换出来没有问题。

我正在尝试连接View1Controller和View2Controller中的一个按钮,该按钮链接到另一个并且我遇到了问题。

我设法得到了......

- (IBAction)swap:(id)sender {

    [self.view removeFromSuperview];
    // This is where I get stuck
}

我试过四处寻找,但在这种情况下我无法解决该怎么做。如何在我的超类视图中加载新视图?这甚至是我想在这里做什么的?我是否将代码放在正确的位置?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您不应该直接将一个视图控制器的视图添加到另一个视图控制器的视图中。尝试使用模态视图控制器:

在View1Controller.m中:

- (void) flipView:(id)sender
{
    View2Controller *vc2 = [[View2Controller alloc] init];
    [self presentModalViewController:vc2 animated:YES];
    [vc2 release];
}

在View2Controller.m中:

- (void) swap:(id)sender
{
    [self dismissModalViewControllerAnimated:YES];
}