15

Dodajemy UISegmentedControl do paska nawigacyjnego programowo, gdzie powinien być titleView. Ale jako Apple docs wspomniano pod titleView, Ta właściwość jest ignorowana, jeśli leftBarButtonItem nie jest nil.UISegmentedControl na pasku nawigacyjnym z przyciskiem Wstecz

Ale chcę mieć również przycisk Wstecz. Jak oni zilustrowali na swoich obrazach!

enter image description here

Poniżej znajduje się kod dodam 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; 

Czy jest inny sposób na dodanie UISegmentedControl wraz z przyciskiem Wstecz?

Dziękuję.

Odpowiedz

3

Możesz utworzyć UIBarButtonItem z niestandardowym widokiem, który może być Twoim UISegmentedControl.

Może działać coś podobnego do poniższego.

//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]; 

Nie testowałem tego, ale powinno to być zgodne z odpowiednimi wskazówkami.

+0

Cześć dzięki za odpowiedź. W międzyczasie czekałem, klepałem razem mały program, żeby go przetestować. Wstawiam 2 Kontrolery widoku, przycisk w pierwszym, aby przejść do drugiego. A w metodzie ViewDidLoad drugiego kontrolera widoku utworzyłem UISegmentedControl za pomocą kodu opublikowanego w moim pytaniu i [voila] (http://i.imgur.com/DlZuAwk.png)! To działa! Nie wiem, dlaczego Apple powiedział, że to nie zadziała. : S – Isuru

23

Spróbuj

Usuń ten wiersz --->self.navigationItem.leftBarButtonItem = nil;

Dodaj zamiast

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

Jedyną zmianą jest Dodałem tę linię:

[statFilter sizeToFit]; 

nadzieję, że ten Pomaga !!!

+0

To faktycznie mi pomogło, dzięki ...: :) – tausun

+9

'setegmentedControlStyle' jest przestarzałe od iOS7 ... czy możesz zaktualizować odpowiedź proszę? –

+0

To nie wydaje się działać z dodaniem kontroli segmentu za pośrednictwem IBOutlet. Praca kontrolna segmentu dodana programowo działa idealnie. – Cymric

Powiązane problemy