繁体   English   中英

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

[英]IPhone: How to Switch Between Subviews That Were Created in Interface Builder

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

现在,我想通过“翻转”按钮在这些视图之间翻转。 我不明白的是我如何以编程方式做到这一点。

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

有什么建议? 谢谢

您通过使用连接到 IB 中的事物
IBOutlet UIView *myView;
或者
@property (nonatomic, retain) IBOutlet UIView *myView;
在你的头文件中。 IBOutlet关键字告诉 IB 使该插座可用于连接。

通过从出口拖动到视图,您可以在连接检查器中建立实际连接: 建立联系

(根据您的观点执行此操作。)

注意:您的视图不必位于 IB 的窗口内。 您可以在外部创建它们,除非您希望它们显示,否则它们不会显示。 您可能希望将其中一个放入其中,以便在您的应用程序启动时显示。

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

[UIView transitionFromView:myView1
                    toView:myView2
                  duration:0.2
                   options:UIViewAnimationOptionTransitionFlipFromRight
                completion:^{
                    // something to do when the flip completes
                }];

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

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
                }];

动画以编程方式完成。 (总是)所以你需要一个参考

在你@interface写这样的东西:

IBOutlet UIView subview1;
IBOutlet UIView subview2
IBOutlet UIView mainView; //this depends on your structure, may be self or if you are in a controller self.view

您需要将这些视图引用与 iB 视图连接起来。

然后在按钮的操作(方法)中执行以下操作:

[mainView bringSubviewToFront:subview1];

如果您需要动画,您可以查看 Xcode 的 Utilities Template Project 的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM