2012-05-07 2 views
8

Как установить изображение значка для selected состояние UISegmentedControl. Является ли UISegmentedControl действительно отсутствием этой функции, или это просто мои недостающие навыки?UISegmentedControl selected state icon image

Есть ли обходной путь для этого?

Любой ответ оценен.

Cheers, Рафал

+0

Следуйте по ссылке http://stackoverflow.com/questions/1281601/custom-uisegmentedcontrol – iMash

+1

Я думаю, установив цель, а затем изменить образ от целевого действия будет работать для вас. – Kuldeep

ответ

18
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 

-(void)segmentAction:(UISegmentedControl*)sender { 

    [sender setImage:[UIImage imageNamed:@"image.png"] forSegmentAtIndex:sender.selectedSegmentIndex]; 

} 
3

Здесь я создал два UISegmentedControl элементов программно и может установить значок изображения.

UISegmentedControl *switchView=[[UISegmentedControl alloc] initWithItems:[[[NSMutableArray alloc] initWithObjects:@"Yes",@"No",nil] autorelease]]; 
[switchView setFrame:CGRectMake(180,802,94,27)]; 
switchView.selectedSegmentIndex=1; 
switchView.segmentedControlStyle=UISegmentedControlStyleBar; 
[switchView setImage:[UIImage imageNamed:@"switchBlueBg.png"] forSegmentAtIndex:0]; // set icon for when selected 
[switchView setImage:[UIImage imageNamed:@"switchOffPlain.png"] forSegmentAtIndex:1]; //set icon for when unselected 
[switchView addTarget:self action:@selector(checkOnOffState:) forControlEvents:UIControlEventValueChanged];    
[scrollview addSubview:switchView]; 

UISegmentedControl *switchView1=[[UISegmentedControl alloc] initWithItems:[[[NSMutableArray alloc] initWithObjects:@"Yes",@"No",nil] autorelease]]; 
[switchView1 setFrame:CGRectMake(180,1003,94,27)]; 
switchView1.selectedSegmentIndex=1; 
switchView1.segmentedControlStyle=UISegmentedControlStyleBar; 
[switchView setImage:[UIImage imageNamed:@"switchBlueBg.png"] forSegmentAtIndex:0]; // set icon for when selected 
[switchView setImage:[UIImage imageNamed:@"switchOffPlain.png"] forSegmentAtIndex:1]; ////set icon for when unselected 
[switchView1 addTarget:self action:@selector(checkOnOffState1:) forControlEvents:UIControlEventValueChanged]; 
[scrollview addSubview:switchView1]; 



-(IBAction)checkOnOffState:(id)sender 
{ 
    UISegmentedControl* tempSeg=(UISegmentedControl *)sender; 

    if(tempSeg.selectedSegmentIndex==0) 
    { 
     //your codes 
    } 
    else 
    { 
     //your codes 
    } 
} 
0

Вы можете установить с помощью одной строки кода [uisegmentButtonRef setImage: [UIImage imageNamed: @ "allbtndown.png"] forSegmentAtIndex: segmentIndex];

Если вы используете по XIb пожалуйста, найти изображение

enter image description here

0

Повышение @ Ответ Kuldeep в

вы можете иметь два или более элементов управления в segmentcontrol

[_segmentcontrol addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 

если вы хотите заменить все изображения иначе, чем использовать этот код ..

-(void)segmentAction:(UISegmentedControl*)sender 
{ 
    if(sender.selectedSegmentIndex==0) 
    { 
     [sender setImage:[UIImage imageNamed:@"calf_selected.png"] forSegmentAtIndex:sender.selectedSegmentIndex];//0 index 
     [sender setImage:[UIImage imageNamed:@"wrist.png"] forSegmentAtIndex:1]; 
    } 
    else 
    { 
     [sender setImage:[UIImage imageNamed:@"calf.png"] forSegmentAtIndex:sender.selectedSegmentIndex];//for 1 index 
     [sender setImage:[UIImage imageNamed:@"wrist_selected.png"] forSegmentAtIndex:0]; 
    } 
} 
3
[segmentControl setBackgroundImage:image 
          forState:UIControlStateSelected 
         barMetrics:UIBarMetricsDefault] 

Вы также должны установить изображение для UIControlStateNormal чтобы изменения вступили в силу.

Apple documentation

+0

Спасибо за это: 'Вам также нужно установить изображение для UIControlStateNormal, чтобы это входило в силу' –