15

Aggiungo uno UISegmentedControl alla barra di navigazione in modo programmatico dove dovrebbe essere titleView. Ma come Apple docs ha menzionato sotto titleView, Questa proprietà viene ignorata se leftBarButtonItem non è nulla.UISegmentedControl nella barra di navigazione con il pulsante Indietro

Ma voglio anche il pulsante Indietro. Come hanno illustrato nelle loro immagini!

enter image description here

Di seguito il codice aggiungo il UISegmentedControl.

self.navigationItem.leftBarButtonItem = nil; 
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]; 
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar]; 
self.navigationItem.titleView = statFilter; 

C'è un altro modo per aggiungere un UISegmentedControl insieme al pulsante Indietro come bene?

Grazie.

risposta

3

È possibile creare un UIBarButtonItem con una vista personalizzata che potrebbe essere il vostro UISegmentedControl.

È possibile che si verifichi un problema simile a quanto segue.

//create segmented control with items 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]]; 

//create bar button item with segmented control as custom view 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 

//add segmented control bar button item to navigation bar 
[[[self navigationController] navigationItem] setRightBarButtonItem:barButtonItem]; 

Non ho provato questo, ma dovrebbe essere lungo le linee giuste di quello che ti serve.

+0

Ciao grazie per la risposta. Nel frattempo stavo aspettando, ho schiaffeggiato un piccolo programma per testarlo. Ho messo 2 View Controller, un pulsante nel primo per passare all'altro. E nel metodo ViewDidLoad del secondo View Controller, ho creato UISegmentedControl usando il codice che ho postato nella mia domanda e [voila] (http://i.imgur.com/DlZuAwk.png)! Funziona! Non so perché Apple ha detto che non funzionerà. : S – Isuru

23

Prova questo

Rimuovi questa linea --->self.navigationItem.leftBarButtonItem = nil;

Aggiungere questo invece Solo

UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]]; 
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar]; 
[statFilter sizeToFit]; 
self.navigationItem.titleView = statFilter; 

cambiamento è che ho aggiunto questa linea:

[statFilter sizeToFit]; 

Spero che questo Aiuta !!!

+0

Questo in realtà mi ha aiutato, grazie ...: :) – tausun

+9

'setegmentedControlStyle' è obsoleto a partire da iOS7 ... puoi aggiornare la tua risposta per favore? –

+0

Sembra non funzionare con il controllo del segmento aggiunto tramite IBOutlet. Un lavoro di controllo del segmento aggiunto funziona perfettamente alla perfezione. – Cymric