2010-06-08 13 views
15

Sono nuovo nello sviluppo di iphone. Ho creato UISegmentedControl con 2 segmenti. Voglio visualizzare le immagini per ogni segmento, invece di title.Here è il mio codiceCome impostare l'immagine su UISegmentedControl in iphone?

NSArray *itemArray = [NSArray arrayWithObjects: @"segment1", @"segment2", nil]; 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; 
segmentedControl.frame = CGRectMake(5,100,300,40); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.selectedSegmentIndex = 1; 
[self.view addSubview:segmentedControl]; 
[segmentedControl release]; 

Ma invece di visualizzare il titolo, Segment1 e segment2 dovrebbe essere sostituito con le immagini i Selo metta aiutarmi out.Thanks.

risposta

26

È quasi esattamente quello che avevi, basta passare un array di UIImages anziché NSStrings.

NSArray *itemArray = [NSArray arrayWithObjects: 
    [UIImage imageNamed:@"segment1.png"], 
    [UIImage imageNamed:@"segment2.png"], 
    nil]; 
+9

È possibile avere testo e immagine sia sul controllo segmentato? – applefreak

+1

@AppleDeveloper, no. – AndrewShmig

+0

Sebbene sia possibile impostare sia un'etichetta che un'immagine per un segmento, un segmento dovrebbe avere uno o l'altro, come descritto nelle linee guida per l'interfaccia umana macOS. https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/SegmentedControl/Articles/SegmentedControlCode.html – Jeff

22

Se si desidera cambiare l'immagine in fase di esecuzione, utilizzare il seguente metodo:

- (void)setImage:(UIImage *)image forSegmentAtIndex:(NSUInteger)segment 

esempio:

[segmentedControl setImage:[UIImage imageNamed:@"segment1.png"] forSegmentAtIndex:0]; 
+3

È possibile avere testo e immagine sia sul controllo segmentato? – applefreak

+1

No. Solo un "titolo" o "immagine". – alexmorhun

1

in Xcode 4.6.3 c'è un'opzione in Interface Builder per aggiungere un'immagine ai controlli del segmento.

9

È semplice farlo con Interface Builder (scheda Attributi).

Image setting with IB

Inoltre è possibile impostare un segmento con un'immagine e l'altra con il testo.

Result

Felice xCoding!)

+1

Per qualche motivo questo non funziona per me. – jcpennypincher

+1

Il controllo del mio segmento non mostrerà alcuna immagine nei segmenti – jcpennypincher

3

Per l'utente del builder di interfaccia, impostare "rendering come" come "immagine originale" anziché come predefinito. Nel mio caso, mostrerà dopo l'esecuzione. Potrebbe funzionare. @jcpennypincher enter image description here

Problemi correlati