2012-05-07 8 views
8

Wie kann ich das Symbolbild für selected Status der UISegmentedControl festlegen. Fehlt die UISegmentedControl wirklich diese Funktionalität oder fehlen mir gerade Fähigkeiten?UISegmentedControl ausgewählter Zustandssymbol Bild

Gibt es einen Workaround dafür?

Jede Antwort geschätzt.

Cheers, Rafal

+0

Folgen Sie diesem Link http://stackoverflow.com/questions/1281601/custom-uisegmentedcontrol – iMash

+1

Ich denke, das Ziel setzen und dann das Bild von Ziel Aktion ändert die Arbeit für Sie. – Kuldeep

Antwort

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

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

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

} 
3

Hier habe ich zwei UISegmentedControl Elemente programmatisch u Bildsymbol festlegen.

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

Sie mithilfe von Codezeile festlegen [uisegmentButtonRef setImage: [UIImage imagenamed: @ "allbtndown.png"] forSegmentAtIndex: segmentIndex];

Wenn Sie mit dem Xib verwenden bitte finden das Bild

enter image description here

0

Verbesserung des @ Kuldeep Antwort-

Sie können zwei oder mehr Steuerelemente in segmentcontrol

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

, wenn Sie alle Bilder anders ersetzen wollen als diesen Code verwenden ..

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

Sie haben auch ein Bild für UIControlStateNormal für diesen Satz zu übernehmen.

Apple documentation

+0

Danke dafür: 'Sie müssen auch ein Bild für UIControlStateNormal setzen, damit dies wirksam wird –