2010-12-11 16 views
8

UINavigationController s üst çubuğumda bir yere bir UISegmentedControl gömmek istiyorum.UINegmentedControl bir UINavigationBar içinde gömülü/Öğe

UIBarButtonItem içine gömmek ve onu sol veya sağ barButtonItem olarak ayarlamak hiç sorun değil.

Bir iPhone ekranından taşınırken bu yaklaşımı anlayabiliyorum. Ancak, bunu bir iPad'de bir Popover'de yapıyorum ve topbarda bulunan "çok fazla" alan var. SegmentedControl'ü sol veya sağ bir barButtonItem olarak eklerseniz, bölüm düğmesindeki metni görememek için küçültülür, "Bitti" düğmesinin genişliği olur. Buna eklemeye çalışırsam navigationItem TitleView, sağa doğru tüm yolu gösterecek ve hala metin ile gösterebileceğim 3 segment kontrolümden daha fazla ölçeklenecektir.

Açılan içeriğimi saran UINavigationController'un merkezine UISegmentedControl eklemeye nasıl giderim?

Birisi bana yardımcı olabilir :) teşekkürler.

cevap

21

Neden denetimi popover başlık çubuğuna koymanız gerekir? iPad'in, aşağıdaki görünüme koymayı düşünmek için çok daha fazla ekran mülkü var.

- DÜZENLEME -

Kendim denedim ve çalışıyor. TestController uygulanması İşte

- (IBAction) showPopover: (id) sender 
{ 
    TestController *testController = [[TestController alloc] initWithStyle: UITableViewStylePlain]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: testController]; 
    UIPopoverController *controller = [[UIPopoverController alloc] initWithContentViewController: navController]; 
    [controller presentPopoverFromBarButtonItem: sender permittedArrowDirections: UIPopoverArrowDirectionAny animated: YES]; 
    controller.delegate = self; 
    [testController release]; 
    [navController release]; 
} 

edilir: Burada

- (id) initWithStyle: (UITableViewStyle) style 
{ 
    if ((self = [super initWithStyle: style])) { 
     UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithFrame: CGRectZero]; 
     ctrl.segmentedControlStyle = UISegmentedControlStyleBar; 
     [ctrl insertSegmentWithTitle: @"One" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Two" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Three" atIndex: 0 animated: NO]; 
     [ctrl sizeToFit]; 
     // Any of the following produces the expected result: 
     self.navigationItem.titleView = ctrl; 
     //self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView: ctrl] autorelease]; 
     [ctrl release]; 
    } 
    return self; 
} 

sonuç edilir:

alt text alt text

hiçbir vardır İşte popover denetleyicisi kurma kodudur kodumdaki püf noktaları, ayrık denetime sizeToFit göndermekten başka. Bu senin için uygun mu?

+0

Merhaba, içeriğe bağlı olarak içeriğe değil, içeriğe ait. Apple'ın, seçili e-postanın içinde, posta uygulamasında "bir sonraki mesaj, yukarı/aşağı ok" segmentedcontrol koyduktan başka bir anlam ifade etmeyeceği gibi. Ya da listeyi sıralamak için bölümlere ayrılmış bir kontrolör yerleştirilmişse. – RickiG

+0

Anladım. Cevabımı çalışma kodu ve ekran görüntüleri ile düzenledim. Umarım bu yardımcı olur. – Costique

+0

Teşekkür ederim :) Bu harika, tüm farkı yaratan sizeToFit çağrısı. Tekrar teşekkürler. – RickiG