2012-05-07 14 views
8

Come è possibile impostare l'immagine icona per lo stato selected dello UISegmentedControl. Il UISegmentedControl manca davvero questa funzionalità o mi mancano solo le abilità?UISegmentedControl icona stato selezionato immagine

C'è qualche soluzione per farlo?

Qualsiasi risposta apprezzata.

Cheers, Rafal

+0

segui questo link http://stackoverflow.com/questions/1281601/custom-uisegmentedcontrol – iMash

+1

Credo che l'impostazione della destinazione e quindi cambiare l'immagine da azione bersaglio lavorerà per voi. – Kuldeep

risposta

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

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

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

} 
3

Qui ho creato due elementi UISegmentedControl programmazione u possibile impostare l'icona di immagine.

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

È possibile impostare utilizzando singola linea di codice [uisegmentButtonRef setImage: [UIImage imageNamed: @ "allbtndown.png"] forSegmentAtIndex: segmentIndex];

Se si utilizza da Xib si prega di trovare l'immagine

enter image description here

0

Valorizzazione @ risposta di Kuldeep

si possono avere due o più controlli in segmentcontrol

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

se si desidera sostituire tutte le immagini in modo diverso rispetto utilizzare questo codice ..

-(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] 

È inoltre necessario impostare un'immagine per UIControlStateNormal per questo abbia effetto.

Apple documentation

+0

Grazie per questo: 'È inoltre necessario impostare un'immagine per UIControlStateNormal affinché ciò abbia effetto. –

Problemi correlati