关闭

UISegmentedControl 分段控制 一个小demo

标签: 分段控制segmentedcontrol
293人阅读 评论(0) 收藏 举报
分类:

**分段控制 (UISegmentedControl)
知识点:
分段控制的创建方法一般用initWithItems:(NSArray *)array
这个数组中的对象必须全是字符串对象,或者图片对象,并且图片对象还必须是镂空图才能显示
重要的属性:
@property(nonatomic) NSInteger selectedSegmentIndex;
核心方法:
-(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;**

下面通过一个demo实现视图的切换:
这里初始化就以图片为例:(镂空图)
这是工程下创建类:
其中最后三个控制器,只需要设置其颜色就可以了,设置window的根视图控制器代码这里不列出了.

主要代码是在根视图控制器中:

#import “RootViewController.m代码”


#import "RootViewController.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"

@interface RootViewController ()
//  设置成属性,是为了在获取到action的时候,方便取值和赋值
@property (nonatomic,retain)FirstViewController *firstVC;
@property (nonatomic,retain)SecondViewController *secondVC;
@property (nonatomic,retain)ThirdViewController *thirdVC;
@end

@implementation RootViewController

- (void)dealloc
{
    [_firstVC release];
    [_secondVC release];
    [_thirdVC release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //  创建一个图片数组
    UIImage *img1 = [UIImage imageNamed:@"01-refresh"];
    UIImage *img2 = [UIImage imageNamed:@"02-redo"];
    UIImage *img3 = [UIImage imageNamed:@"03-loopback"];
    NSArray *itemsArray = @[img1,img2,img3];

    //  以图片数组初始化一个UISegmentedControl
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc]initWithItems:itemsArray];
    segmentControl.frame = CGRectMake(100, 100, 200, 50);
    segmentControl.backgroundColor = [UIColor cyanColor];
    //  设置初始化选中的是哪个位置
    segmentControl.selectedSegmentIndex = 1;
    //  改变对象对应下标的宽度
    [segmentControl setWidth:100 forSegmentAtIndex:1];
    //  设置选中的填充色
    [segmentControl setTintColor:[UIColor redColor]];

    //  为这个分段控制控件添加方法
    //  记住是根据值的变化,也就是下标发生变化
    [segmentControl addTarget:self action:@selector(segmentedControlAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:segmentControl];
    [segmentControl release];

    //  创建控制器,用本控制器进行管理,将其设置成本类的子控制器
    //  再讲自控制器的视图加到跟控制器视图上
    self.firstVC = [[FirstViewController alloc]init];
    [self.view addSubview:self.firstVC.view];
    self.secondVC = [[SecondViewController alloc]init];
    [self.view addSubview:self.secondVC.view];
    self.thirdVC = [[ThirdViewController alloc]init];
    [self.view addSubview:self.thirdVC.view];

    //  释放
    [_firstVC release];
    [_secondVC release];
    [_thirdVC release];

    //  初始化视图显示
    //  如果你不初始化视图,那么你将无法获取到action,因为这些view会覆盖掉先加入的segmentedControl
    //  这里初始话的view看你对应的初始化的选中的位置
    [self.view bringSubviewToFront:self.secondVC.view];
    [self.view bringSubviewToFront:segmentControl];

}

//  实现方法
- (void)segmentedControlAction:(UISegmentedControl *)segmentedControl
{
    //  实现视图的切换
    switch (segmentedControl.selectedSegmentIndex) {
        case 0:
            [self.view bringSubviewToFront:self.firstVC.view];
            break;
        case 1:
            [self.view bringSubviewToFront:self.secondVC.view];
            break;
        case 2:
            [self.view bringSubviewToFront:self.thirdVC.view];
            break;

        default:
            break;
    }
    //  由于把segmentedControl放在最上面是每个分支都有的可以写在外部,减少代码
    [self.view bringSubviewToFront:segmentedControl];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

三维效果图
windows->根视图->三个自控制的视图->分段控制空间的视图
效果图
这里写图片描述
这里写图片描述
这里写图片描述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7724次
    • 积分:298
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档