IPhone:如何在Interface Builder中创建的子视图之间切换

for*_*yez 0 iphone objective-c interface-builder

所以我在主视图中基本上有两个子视图.我通过转到IB中的库并将视图拖到我的主nib文件然后将控件放在它们上来创建每个子视图.

现在,我想通过"翻转"按钮在这些视图之间切换.我不明白的是我如何以编程方式执行此操作.

我的问题是:我是否"隐藏"其中一个子视图,然后在我翻转时以编程方式取消隐藏它?我是否通过Interface Builder为每个人命名,并按照这种方式进行操作?我真的不需要代码来实际执行翻转或任何操作,我只需要概念性地理解我如何以编程方式引用IB中构建的视图以及隐藏在我的场景中是否有意义...

有什么建议?谢谢

jtb*_*des 6

您可以使用
IBOutlet UIView *myView;

@property (nonatomic, retain) IBOutlet UIView *myView;
在头文件中连接到IB 中的内容.该IBOutlet关键字告诉IB,以使该插座可用于连接.

您可以通过从插座拖动到视图来在Connection检查器中建立实际连接: 建立连接http://cl.ly/eb3b5cd826b20fc9e307/content

(对你的观点这样做.)

注意:您的视图不必位于IB的窗口内.您可以在外部创建它们,并且在您需要它们之前不会显示它们.您可能希望将其中一个放入其中,以便在您的应用启动时显示.

然后,当你真的想要翻转到另一个视图时,假设你正在使用iOS 4.0,它很简单(有3.x和更低的方法,但这是最简单的):

[UIView transitionFromView:myView1
                    toView:myView2
                  duration:0.2
                   options:UIViewAnimationOptionTransitionFlipFromRight
                completion:^{
                    // something to do when the flip completes
                }];
Run Code Online (Sandbox Code Playgroud)

或者,如果要动态确定哪个视图已经可见:

UIView *oldView, *newView;
UIViewAnimationOptions transition;
if (myView1.superview) { // view 1 is already visible
    oldView = myView1;
    newView = myView2;
    transition = UIViewAnimationOptionTransitionFlipFromRight;
} else { // view 2 is visible
    oldView = myView2;
    newView = myView1;
    transition = UIViewAnimationOptionTransitionFlipFromLeft;
}
[UIView transitionFromView:oldView
                    toView:newView
                  duration:0.2
                   options:transition
                completion:^{
                    // something to do when the flip completes
                }];
Run Code Online (Sandbox Code Playgroud)