15

titleView'un nerede olması gerektiği konusunda Gezinme çubuğuna bir UISegmentedControl ekliyorum. Ancak Apple docs'un titleView, altında belirtilmiş olması .BarButtonItem, nil ise, bu özellik göz ardı edilir.Geri düğmesiyle Gezinme Çubuğunda UISegmentedControl

Ancak arka tuşa da sahip olmak istiyorum. Kendi resimlerinde resmedildikleri gibi! Aşağıda

enter image description here

Ben UISegmentedControl eklemek koddur.

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; 

yanı Geri düğmesi ile birlikte UISegmentedControl eklemek için başka bir yolu var mı?

Teşekkür ederiz.

cevap

3

UIBarButtonItem, UISegmentedControl ürününüzde olabilecek özel bir görünüme sahip olabilirsiniz.

Aşağıdaki çizgilerde bir şey işe yarayabilir.

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

Bunu test etmedim, ancak ihtiyacınız olan şeylerin doğru çizgileri boyunca olmalı.

[statFilter sizeToFit]; 

Umut bu:

+0

Cevabınız için teşekkürler. Bu sırada bekledim, test etmek için küçük bir programı bir araya getirdim. 2 View Controllers'ı, diğerine ilk basmak için bir düğmeye bastım. Ve ikinci View Controller'ın ViewDidLoad yönteminde, UISegmentedControl'ü kendi sorumu içinde gönderdiğim kodu kullanarak oluşturdum ve [voila] (http://i.imgur.com/DlZuAwk.png)! İşe yarıyor! Apple neden çalışmadığını söyledi. : S – Isuru

23

yerine bu

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

Sadece değişiklik ekle kaldır bu satırı --->self.navigationItem.leftBarButtonItem = nil;

bu

deneyin ben bu satırı ekledikten edilir Yardım eder !!!

+0

Bu gerçekten bana yardımcı oldu, teşekkürler ...: :) – tausun

+9

'setegmentedControlStyle' iOS7'den itibaren kullanımdan kaldırıldı ... lütfen cevabınızı güncelleyebilir misiniz? –

+0

Bu, bir IBOutlet üzerinden segment denetimi eklenmesiyle işe yaramıyor gibi görünüyor. Bir segment kontrol çalışması eklendiğinde programatik olarak mükemmel çalışır. – Cymric

İlgili konular