//创建两个选项的字符串数组
NSArray *items = [NSArrayarrayWithObjects:@"Black",@"White",nil];
//以NSArray为参数的初始化选择控件
UISegmentedControl *segment = [[[UISegmentedControlalloc]initWithItems:items]autorelease];
//设置左侧选项第一项默认为选择状态
segment.selectedSegmentIndex =0;
//设置选择控件的位置
segment.frame =CGRectMake(0,0,130, 30);
//注册选项被选择时调用方法
[segment addTarget:selfaction:@selector(segmentDidChange:)forControlEvents:UIControlEventValueChanged];
//将选择控件追加到导航条的右侧
UIBarButtonItem *button = [[UIBarButtonItemalloc]initWithCustomView:segment];
self.navigationItem.rightBarButtonItem = button;
//选项被选择后发生变化时调用此方法
-(void)segmentDidChange:(id)sender
{
if ([senderisKindOfClass:[UISegmentedControlclass]]) {
UISegmentedControl *segment = sender;
if (0 == segment.selectedSegmentIndex) {
//第一个选项被选择后将画面背景设置成黑色
self.view.backgroundColor = [UIColorblackColor];
}else{
//第二个选项被选择后将画面背景设置成白色
self.view.backgroundColor = [UIColorwhiteColor];
}
}
}
_______________________________________________________________________________________
选择控件的种类
//设置选择控件的种类
segment.segmentedControlStyle =UISegmentedControlStyleBar;
typedef enum {
UISegmentedControlStylePlain, // large plain
UISegmentedControlStyleBordered, // large bordered
UISegmentedControlStyleBar, // small button/nav bar style. tintable
UISegmentedControlStyleBezeled, // DEPRECATED. Do not use this style.
} UISegmentedControlStyle;
//momentary = YES 时不显示选择状态
segment.momentary = YES;
//选择控件的颜色更改,只有segmentedControlStyle = UISegmentedControlStyleBar才有效
segment.tintColor = [UIColorblackColor];
//在.h文件中声明images,titles 为NSArray 类型
//读入图标图片
UIImage* image1 = [UIImage imageNamed:@"1.png"];
UIImage* image2 = [UIImage imageNamed:@"2.png"];
UIImage* image3 = [UIImage imageNamed:@"3.png"];
//创建选项显示用的图标、文本标题的NSArray类型数组
images = [[NSArray alloc] initWithObjects:image1, image2, image3,nil];
titles = [[NSArray alloc] initWithObjects:@"1",@"2", @"3",nil];
//选项初期为文本型
UISegmentedControl* segment =
[[[UISegmentedControl alloc] initWithItems:titles_] autorelease];
segment.segmentedControlStyle = UISegmentedControlStyleBordered;
segment.frame = CGRectMake(10, 50, 300, 30 );
[segment addTarget:self
action:@selector(segmentDidChange:)
forControlEvents:UIControlEventValueChanged];
[self.view addSubview:segment];
}
//选项被选中后,将其中的文本型标题换成图标
- (void)segmentDidChange:(id)sender {
if ( [sender isKindOfClass:[UISegmentedControl class]] ) {
UISegmentedControl* segment = sender;
for ( int i =0; i < segment.numberOfSegments; ++i ){
if ( i == segment.selectedSegmentIndex ) {
[segment setImage:[images_ objectAtIndex:i] forSegmentAtIndex:i];
}else {
[segment setTitle:[titles_ objectAtIndex:i] forSegmentAtIndex:i];
}
}
}
}
//修改选项内容的显示位置
[segment setContentOffset:CGSizeMake(0, -7 ) forSegmentAtIndex:0];
[segment setContentOffset:CGSizeMake(0, 7 ) forSegmentAtIndex:2];
//设置选项的非活性
[segment setEnabled:NO forSegmentAtIndex:1];
//选项的插入和删除
//单击"Insert"按钮后追加选项,单击"Remove"按钮后会删除最后一个选项,单击"RemoveALL"按钮后删除所有按钮
//初始化选择控件
segment_ = [[UISegmentedControl alloc] init];
segment_.segmentedControlStyle = UISegmentedControlStyleBordered;
segment_.frame = CGRectMake(10, 50, 300, 30 );
[self.view addSubview:segment_];
//向其中追加三个选项
[segment_ insertSegmentWithTitle:@"3" atIndex:0 animated:NO];
[segment_ insertSegmentWithTitle:@"2" atIndex:0 animated:NO];
[segment_ insertSegmentWithTitle:@"1" atIndex:0 animated:NO];
//在工具条上追加Insert、Remove、RemoveAll三个按钮,并注册三个按钮的响应方法
UIBarButtonItem* insertButton =
[[[UIBarButtonItem alloc] initWithTitle:@"Insert"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(insertDidPush)] autorelease];
UIBarButtonItem* removeButton =
[[[UIBarButtonItem alloc] initWithTitle:@"Remove"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(removeDidPush)] autorelease];
UIBarButtonItem* removeAllButton =
[[[UIBarButtonItem alloc] initWithTitle:@"RemoveAll"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(removeAllDidPush)] autorelease];
NSArray* items = [NSArray arrayWithObjects:insertButton, removeButton, removeAllButton,nil];
[self setToolbarItems:items animated:YES];
}
//Insert按钮的响应方法
- (void)insertDidPush {
NSNumber* number = [NSNumber numberWithInteger:segment_.numberOfSegments +1];
[segment_ insertSegmentWithTitle:[number stringValue]
atIndex:[number integerValue]
animated:YES];
}
//Remove按钮的响应方法
- (void)removeDidPush {
[segment_ removeSegmentAtIndex:segment_.numberOfSegments -1 animated:YES];
}
//RemoveAll按钮的响应方法
- (void)removeAllDidPush {
[segment_ removeAllSegments];
}