如何使UISegmentedControl像UITabBarController一样?

时间:2010-12-24 03:58:32

标签: iphone objective-c ios uisegmentedcontrol

如何在选择不同的段时使用UISegmentedControl加载不同的子视图?我是Objective-c和iOS编程的新手。

或者有没有办法让UITabBarController看起来像UISegmentedControl?

4 个答案:

答案 0 :(得分:3)

采用程序化方法

在loadView中

{
    NSArray *segments = [NSArray arrayWithObjects:@"Left", @"Right", nil];


    segmentedControl = [[UISegmentedControl alloc]initWithItems:segments];
    [segmentedControl addTarget:self
    action:@selector(changeSubViews)
    forControlEvents:UIControlEventValueChanged];
    contentView = [UIView alloc]initwithFrame:(the frame where you want the subViews to be displayed)];
    [self.view addSubView:contentView];

    }

    - (void)changeSubViews
        {
            switch(segmentedControl.selectedSegmentIndex)
            {
            case 0:
                {
                    [rightView removeFromSuperView];
                    if (leftView ==nil){leftView alloc, init;}
                    [contentView addSubView:leftView];
                    break;
                }
            case 1:
                {
                    [leftView removeFromSuperView];
                    if (rightView ==nil){rightView alloc, init;}
                    [contentView addSubView:rightView];
                    break;
                }
            }
    }

答案 1 :(得分:1)

您可以将UIToolbar添加到根控制器的view。在其中,您将拥有一个UISegementedControl,其中包含根控制器处理的操作。根据点击的细分,您将加载不同的视图并在UIToolbar下显示视图(以及您希望视图位于其下的任何其他内容)。

希望这有帮助!

答案 2 :(得分:0)

为此,您可以在视图中创建两个视图,并在.h文件中为两个视图创建属性 和 将IBAction附加到分段控件并像这样编写代码

if(self.yourSegmentedControl.selectedSegmentIndex==0)
    {   
    view1.hidden=YES;
        view2.hidden=NO;
    }
    else if(self.categorySegmentedControl.selectedSegmentIndex==1)
    {  
    view2.hidden=YES;
        view2.hidden=NO:
    }

希望这会对你有所帮助。

答案 3 :(得分:0)

你应该在这篇文章中考虑crafterm的回答:UISegmentedControl Best Practice

这将允许您维护正常的ViewController行为(支持旋转,内存警告等),同时允许在其上面进行分段控制。