一个ViewController的两个UIViews

时间:2011-11-08 17:24:43

标签: iphone uiviewcontroller

我不知道该怎么做。所以我最初有一个ViewController有一个.xib,有一个主视图。我这样说:

DogViewController *dvc = [[DogViewController alloc] initWithNibName:@"DogViewController" bundle:nil];
dvc.modalPresentationStyle = UIModalPresentationFormSheet;
dvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:dvc animated:YES];
[dvc release];

这样可行。但是现在从DogViewController.xib中的按钮按下,我想要关闭当前的表单,并在继续之前显示另一个表单以及一些其他问题。所以我开始在DogViewController的原始.xib中添加另一个视图,然后陷入如何解散第一个的逻辑,并显示第二个。我假设我需要在同一个.xib的新视图中使用一些插座,但是从那里我迷失了。感谢。

4 个答案:

答案 0 :(得分:0)

您可以在的所有其他对象前面的其他视图中添加视图,只需使用其hidden属性来控制是否显示它。

答案 1 :(得分:0)

为什么不在模态视图中使用导航控制器,创建另一个xib并执行[self.navigationController pushViewController:secondViewController animated:YES];

如果您有充分的理由,可以设置第二个视图插座secondView并使用

之类的代码
UIView* superview = [self.view superview];
[self.view removeFromSuperView];
[superview addSubview:self.secondView];

答案 2 :(得分:0)

这样做的方法是用Mathiew提到的UINavigationController来设置它。但是,如果您真的想在一个视图控制器上的两个视图之间进行转换,可以参考Apple的示例代码:

http://developer.apple.com/library/ios/#samplecode/ViewTransitions/Introduction/Intro.html

代码使用ImageViews来演示效果,但我不明白为什么你不能使用视图:)

答案 3 :(得分:0)

非常简单的解决方案是保持对MainViewController的引用,并在其上调用两个视图控制器之间交换的方法。

像这样:

@implementation MainViewController
    - (void)showDogViewController {
        [self dismissModalViewControllerAnimated:YES];

        DogViewController *dvc = [[DogViewController alloc] initWithNibName:@"DogViewController" bundle:nil];
        dvc.modalPresentationStyle = UIModalPresentationFormSheet;
        dvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        dvc.mainViewController = self;

        [self presentModalViewController:dvc animated:YES];
        [dvc release];
    }

    - (void)showCatViewController {
        [self dismissModalViewControllerAnimated:YES];

        CatViewController *cvc = [[CatViewController alloc] initWithNibName:@"CatViewController" bundle:nil];
        cvc.modalPresentationStyle = UIModalPresentationFormSheet;
        cvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        cvc.mainViewController = self;

        [self presentModalViewController:cvc animated:YES];
        [dvc release];
    }
}
@end

@implementation DogViewController
    - (void)showCatViewController {
        [mainViewController showCatViewController]
    }
@end

@implementation CatViewController 
    - (void)showDogViewController {
        [mainViewController showDogViewController]
    }
@end