在一个UIViewController中交换UIViews

时间:2010-01-05 00:19:40

标签: iphone objective-c xcode

我仍然在寻找iPhone SDK的方法,我已经遵循了一些很好的教程,但我正试图找到一些简单的解决方案。

现在我想要一个简单的应用程序,它将共享相同的UIViewController。

我在Interface Builder中创建了多个视图,并在Inspector中为它们指定了唯一的名称(Identity视图 - Interface Builder Identity)。

假设我按下按钮并按下按钮时编写了一个动作。我的简单问题是在xcode中,如何以编程方式调用其他视图?

非常感谢

5 个答案:

答案 0 :(得分:3)

我建议您在尝试控制多个视图时使用多个视图控制器。将它们包装在UINavigationController中,让您的生活更轻松。

话虽如此,您想在主控制器中创建IBOutlets,并将每个IBOutlet挂钩到您的一个视图中。然后,当你准备好了,你可以

[view1 removeFromSuperview];
[self.view addSubview: view2];

请注意,这预示着您使用第三个单独的视图作为控制器的主视图。

答案 1 :(得分:3)

您的视图控制器具有view属性。

您可能有两个此view属性的子视图。我们称之为IBOutlet UIView *属性subviewAsubviewB

如果按顺序插入它们,那么只需在视图控制器的-bringSubviewToFront:属性上调用view方法即可交换它们:

[self.view bringSubviewToFront:subviewB];

同样,将subviewA带回到前面:

[self.view bringSubviewToFront:subviewA];

如果需要,您还可以为子视图“frame属性设置动画,相对于彼此移动它们的原点,将它们移入和移出,以及为渐变和其他视图属性设置动画。这是一个更多的工作,但在这个问题上有一个很好的Stack Overflow答案here

答案 2 :(得分:2)

我也强烈推荐Apress书“开始iPhone3开发”。

我刚刚实现了类似这样的东西,用于分段控件。我在子视图中将一个放在另一个上面,并且分段控制动作设置view1.hidden = YES; view2.hidden = NO;反之亦然,以响应控制状态的变化。

您可能想要查看Interface Builder中的标签栏控制器,因为它会自动为您切换视图而不需要任何代码,至少在您想要用另一个屏幕替换屏幕大小的视图的简单情况下 - 大小的视图,每个都有自己的视图控制器。

答案 3 :(得分:0)

就在它的脸上,这有点奇怪。一般来说,如果1个视图== 1个控制器,这将是最简单的。

您尝试添加子视图的视图(例如,将添加到主视图的控件),还是全屏视图,当用户按下按钮时,这些视图会使现存视图消失?< / p>

答案 4 :(得分:0)

这本书,由Dave和Jeff开始iphone3开发,有一个很好的教程。您需要创建主视图控制器的2个子视图并单独调用它们。