【问题标题】:Using UISegmentedControl to switch between two views使用 UISegmentedControl 在两个视图之间切换
【发布时间】:2012-01-04 06:49:54
【问题描述】:

我创建了 UIViewController 的子类。其中我有两个属性:

@property (nonatomic, retain) IBOutlet UIView *presetsView;
@property (nonatomic, retain) IBOutlet UIView *customView;

我在我的 .xib 中添加了一个新的 UIView,并在其中放入了一些 UI 元素。我想隐藏一个视图,并根据按下 UISegmentedControl 的时间显示另一个视图。

我的问题是在 Interface Builder 中,IB 提供给我的原始视图已经有一个连接到文件所有者的插座。因为我有自己的两个视图,预设和自定义,我如何在 IB 中进行插座连接?

我尝试删除 IB 提供的原始视图并将两个新的 UIView 拖到画布上。然后我为每个人连接了一个插座。当我推送我的新视图控制器时,我收到一个错误,即我的视图控制器没有视图。然后,当我将 File's Owner 连接到为我想首先显示的视图显示的“视图”插座时,应用程序就会运行。我不确定这是否是正确的方法,以及为什么它是正确的方法。 ViewController 是否总是需要一个 .view 属性作为它的出口?这就是我需要这样做的原因吗?谢谢。

【问题讨论】:

    标签: iphone uiviewcontroller


    【解决方案1】:

    为 UISegmentedcontrol 编写操作方法并实现如下所示的方法

    -(IBAction) selectMessageType {

    noResultsPriview.hidden = YES;
    //[activityIndicator startAnimating];
    
    switch (msgOptionControl.selectedSegmentIndex) {
    
        case 0:
    

    //view1 的代码 打破;

        case 1:
    

    //view2 中断代码;

        case 2:
    

    //view3 的代码 打破;

        case 3;
            //code for view4
            break;
    
    
        default:
            break;
    
    }
    

    }

    【讨论】:

      【解决方案2】:

      是的,每个 UIViewController 都有一个根视图。它必须能够在调用其 -loadView 方法时构造该视图,方法是从 nib 文件加载该视图(并设置其 view 属性作为结果)或以编程方式创建它。

      在您的情况下,请单独保留 view 属性视图,不要尝试交换它。这个根视图已经被添加到窗口中,并且将控制器的引用更改为指向其他对象只会导致混淆和未定义的行为。而是将您的两个视图都添加为控制器根视图的子视图,然后根据需要隐藏或显示。

      【讨论】:

        【解决方案3】:

        UIViewController 必须具有有效的 UIView,因此在您的情况下,它可以是在 XIB 创建期间创建的 original UIView。您的两个 UIView 属性是正确的。您所要做的就是在 IB 中设置您的 presetsVieworiginal UIView 之间的连接,以便您稍后可以切换回它,然后您需要将 customView 连接到您的另一个 UIView。

        所以在您完成原始 UIView 后将有两个连接,一个作为 UIViewController(所有者)的视图,一个作为 presentsView

        这些连接只是指针,因此您可以使用它们来操作 UIViewController 中的对象。

        【讨论】:

          猜你喜欢
          • 2015-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-22
          • 1970-01-01
          • 1970-01-01
          • 2010-11-06
          相关资源
          最近更新 更多