【问题标题】:Swapping between UIViews in one UIViewController在一个 UIViewController 中的 UIView 之间交换
【发布时间】:2010-01-05 00:19:39
【问题描述】:

我仍在寻找有关 iPhone SDK 的方法,我已经学习了一些很好的教程,但我目前正在尝试找到一些简单的解决方案。

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

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

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

非常感谢

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

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

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

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

    注意,这假设您使用第三个独立视图作为控制器的主视图。

    【讨论】:

    • Knock up 在英国和奥兹的意思是“建造”。用过“……弄个棚子。”
    • 嘿,太好了,谢谢。我将检查被推荐两次的书,我将研究使用单独的视图控制器。我感谢指针
    【解决方案2】:

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

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

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

    [self.view bringSubviewToFront:subviewB];
    

    同样,将subviewA 带回前面:

    [self.view bringSubviewToFront:subviewA];
    

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

    【讨论】:

    • 谢谢,我想这是如果两个子视图都已经在视图中了吗?这不是这个应用程序的工作方式,但知道这一点非常方便!干杯
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      从表面上看,这有点奇怪。一般来说,如果 1 个视图 == 1 个控制器,这将是最简单的。

      您正在尝试添加子视图的视图(例如,将添加到主视图的控件)还是当用户按下按钮时将取代现有视图的全屏视图?

      【讨论】:

      • 它将是单独的接口,最终将是一个足够简单的游戏,只是事先测试 iPhone SDK 的基本控件,我对委派很陌生,但我想即使 1 个视图控制器是使用每个视图我仍然可以使一个更占主导地位吗?我会深入挖掘,感谢所有反馈
      【解决方案5】:

      Dave 和 Jeff 所著的《开始 iphone3 开发》这本书有一个很好的教程。您需要创建主视图控制器的 2 个子视图并分别调用它们。

      【讨论】:

        猜你喜欢
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多