2012-05-07 14 views
8

¿Cómo puedo establecer la imagen de icono para selected estado de . ¿El UISegmentedControl realmente falta esta funcionalidad o solo me faltan habilidades?UISegmentedControl icono de estado seleccionado imagen

¿Existe alguna solución para hacerlo?

Cualquier respuesta apreciada.

Cheers, Rafal

+0

Siga este enlace http://stackoverflow.com/questions/1281601/custom-uisegmentedcontrol – iMash

+1

Creo establecer el objetivo y luego cambiar la imagen de la acción de destino va a trabajar para usted. – Kuldeep

Respuesta

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

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

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

} 
3

Aquí crearon dos elementos UISegmentedControl programación u puede fijar el icono de imagen.

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

Se puede establecer mediante sola línea de código [uisegmentButtonRef setImage: [UIImage imageNamed: @ "allbtndown.png"] forSegmentAtIndex: segmentIndex];

Si utiliza por Xib favor encontrar la imagen

enter image description here

0

Mejora de @ respuesta de Kuldeep

es posible que tenga dos o más controles en segmentcontrol

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

si desea reemplazar todas las imágenes de manera diferente que utiliza este código ..

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

También tiene que fijar una imagen para UIControlStateNormal para que esto tenga efecto.

Apple documentation

+0

Gracias por esto: 'También debe establecer una imagen para UIControlStateNormal para que esto surta efecto' –

Cuestiones relacionadas