是否可以使用分段控件来更改视图?

时间:2010-04-09 22:46:02

标签: objective-c iphone uisegmentedcontrol hig

我想使用分段控件而不是UITabBar控制器来更改视图。这是否符合HIG?

如果是,我该怎么办?我应该为我的项目使用什么模板以及代码?

2 个答案:

答案 0 :(得分:6)

有几个Apple应用程序使用分段控件来更改视图:iTunes,App Store应用程序和YouTube应用程序。但是,它们都在屏幕顶部使用它,并与分段控件结合使用。地图应用程序在屏幕底部使用一个,但这个想法与标签栏不同。日历应用程序还使用一个,用于列表,日和月视图(在底部的工具栏中)。

我认为经验法则是,如果您提供相同类型数据的不同视图,则可以使用分段控件。如果您显示的内容不相关,则应使用标签栏。您可能不会因为使用分段控件而拒绝应用程序,但如果您以非标准方式使用它,用户会感到有点困惑。

我不确定示例代码,我能看到的最接近的是“Top Songs”示例。这不会交换视图,只是在单击细分时更改FetchedResultsController

这是关于SO的另一个问题,几乎是一样的:

How do I use a UISegmentedControl to switch views?

答案 1 :(得分:1)

我就这样做了:

-(IBAction)segmentedControlIndexChanged{
switch (self.segmentedControl1.selectedSegmentIndex) {
    case 0:
        [details1 removeFromSuperview];
        [details2 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details0];
        break;
    case 1:
        [details2 removeFromSuperview];
        [details0 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details1];
        break;
    case 2:
        [details0 removeFromSuperview];
        [details1 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details2];
        break;
    case 3:
        [details0 removeFromSuperview];
        [details1 removeFromSuperview];
        [details2 removeFromSuperview];
        [details addSubview:details3];
        break;
    default:
        break;
}
}

确保将IB中分段控件的valueChanged方法绑定到此IBAction。