**分段控制 (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
三维效果图
效果图