【问题标题】:Changing Views from UISegmentedControl从 UISegmentedControl 更改视图
【发布时间】:2009-10-14 01:18:02
【问题描述】:

我有一个关于 Nib 和 UISegmentedControls 的最佳实践类型的问题。

我有一个 nib 文件,其中包含一个带有 3 个按钮的 UISegmentedControl。切换时,每个都在窗口的主要部分显示不同的视图。

一切正常,但我怀疑我的方法有缺陷,想知道是否有人可以建议我“打算”这样做的方式。

目前在 NIB 中,我有 3 个 UIView,它们相互重叠,然后在 .m 文件中,我修改每个 UIView .hidden 以隐藏和显示我感兴趣的那个。

- (IBAction)segmentAction:(id)sender
{
    if([sender selectedSegmentIndex] == 0)
    {
        [self.view1 setHidden:NO];
        [self.view2 setHidden:YES];
        [self.view3 setHidden:YES];
    }
    else if([sender selectedSegmentIndex] == 1)
    {
        [self.view1 setHidden:YES];
        [self.view2 setHidden:NO];
        [self.view3 setHidden:YES];
    }
    else if([sender selectedSegmentIndex] == 2)
    {
        [self.view1 setHidden:YES];
        [self.view2 setHidden:YES];
        [self.view3 setHidden:NO];
    }
}

一切都“正常”,但 nib 文件编辑起来很痛苦,因为您不能轻易“关闭”其他 UIView,所以我总是在画布上选择错误的元素。 IB 还抱怨说:“这个视图与它的兄弟之一重叠”在信息对话框中。

鉴于我希望在 InterfaceBuilder 中布置所有视图,我应该采取什么方法。我应该有 4 个 nib 文件吗?如果是这样,当按下segmentControl 时我应该如何加载它们?您可以指导我使用任何示例代码吗?

谢谢

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    在我的脑海中,您可以尝试以下几件事:

    1) 在 IB 中创建 3 个单独的 UIView 对象,但不要将它们添加到视图层次结构中

    假设您有一个包含所有三个视图的视图控制器,您可以在 IB 中通过将每个视图从库中拖动到标题为 YourNib.nib 或 YourXib.xib 的窗口来创建 3 个视图。所以不要将视图拖到视图控制器的主视图中。

    现在您可以双击每个视图并自行编辑它们,而不必尝试选择不同的视图,因为它们是重叠的(因为它们没有重叠)

    在连接选项卡中,将视图控制器的视图属性连接到其中一个视图。

    这将设置默认值。

    现在在您的代码中,您可以更改连接到的视图:

    [myViewController setView:view2];

    并重新加载视图。

    2) 制作一个非常高的视图(或非常宽的视图),并在您单击分段视图按钮时更改视图相对于父视图框架的 y 位置,以使用户看起来好像他们'重新转到单独的页面

    这使得“视图”之间的动画和过渡变得容易。虽然会使用更多的内存,因为您已经加载了所有元素,即使它们不可见。但你还是这样做了。

    【讨论】:

    • 你能澄清make 3 separate UIView objects but don't add them to the view hierarchy的意思吗?你所说的create the 3 views by dragging each view from the library to the window titled YourNib.nib or YourXib.xib是什么意思。
    【解决方案2】:

    这将按你的方式工作,但你是对的,它并不理想。没有任何上下文,最自然的实现方式是一个 UITabBarController 管理三个 UIViewController,每个都有自己的视图。当您切换视图(viewWill/DidAppear、viewWill/DidDisappear 等)时,您将获得所有回调的好处 + 分离您的 nib 文件会更容易。回调对于在适当的时间加载/重新加载数据非常有帮助。

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 1970-01-01
      • 2012-06-18
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多