12

Özür dilerim iphone programlaması konusunda yeniyim.Navigasyon Item View Controller'da görünmüyor

Master-Detail Iphone uygulaması oluşturdum (böylece Gezinme Denetleyicisi projeyle birlikte geldi). Masterview denetleyicisinde bir UIBarButtonItem aracılığıyla oluşturduğum yeni bir denetleyiciye bakıyorum. Ancak, detailviewcontroller'ın (projeyle birlikte gelen) aksine, storyboard'umun sahne listesinde görünse bile, navigasyon görüntüsünü (veya navigationbar?) Görüntüleyemiyorum.

İşte bazı kod ve bir ekran görüntüsü: benim masterviewcontroller.m benim masterviewcontroller.m viewDidLoad

() fonksiyonu

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:normal target:self action:@selector(goToSettings:)]; 
self.navigationItem.leftBarButtonItem = settingsButton; 

- (IBAction)goToSettings:(id)sender{  
    [self performSegueWithIdentifier:@"SettingsSegue" sender:self]; 
} 

ben bir başlık eklenerek çalıştı new viewcontroller.m sınıfının viewDidLoad işlevi sırasında navigationitem (bu Link numaralı belgede belirtilen ancak çalışmadı)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.navigationItem.title = @"Settings"; 
    self.navigationItem.leftBarButtonItem = self.editButtonItem; 
} 

Ama yine de benim Film şeridinde gösterir

Yani benim sorum (Bu sahnenin altında değil görünümün ekranda Listede göründüğünde) şimdi neden gösterilmesini ve nasıl olduğunu Bunu anladım mı? Master-detay projesiyle gelen detay görüntü denetleyicim gibi bir geri düğmesi istiyorum.

DÜZENLEME 1.

Ben gezinti kontrol nil olup olmadığına dair bir onay eklemiş ve onu nil değil (eğer deyim girilen asla) Ben de arkaya navigasyon öğesi değişen ve çıkarmadan çalıştı ve hiçbiri çalıştı . Şimdi ben navigasyon öğesi Listede göründüğünde ama sen doğruladıktan

enter image description here

+0

yapmak zorunda "ilk View Controller" olmadığıydı girildi, çünkü dokümanlar self.navigationItem'in anında oluşturulduğunu söylüyor. –

cevap

12

Navigasyon madde yüzünden benim segue ait "tarzı" nin gelmedi.

Sahneyi ana görünüm denetleyicisinden ayar görünümü denetleyicisine taşıyan segue 'modal' olarak ayarlandı. 'İtmeye' ayarlanmış olmalı.Bu yardımcı programlar

1

görünüme göstermek doesnt gösterebilir görüntüyü göstermek için yeterli bir üne sahip olduğunu

if(self.navigationItem == nil) 
{ 
    [ self.navigationItem init]; 
} 
self.navigationItem.title = @"Settings"; 
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 

senin viewDidLoad yönteminde listelenen gezinme denetleyicisi nil değil mi?

doğru olmayan nil bir self.navigationItem var varsayarsak, yanlış yerine hep birlikte bu kaldırmayı deneyin, senin self.navigationItem.leftBarButtonItem bir editButtonItem ayarını olduklarını görebiliyoruz!

çıkarmadan sorunu deneyin çözmezse:

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
6

Bunu yaparak Segue Stil değiştirmek zorunda bölmesinde üzerinde Storyboard'dan yapılır:

  • Film Şeridine içinde Segue seçin;
  • Öznitelik denetçisine gidin (sağdaki bölmelerde);
  • Stil niteliğini Bas.

Bu, ekran rulosunu sağdan sola yapacak ve Gezinme çubuğu kayan görünecektir. Modal ile, ekran, ekranın en alt tarafından ekrana gelir ve Gezinme çubuğunun görüntülenmesine izin vermez.

0

Görünüm denetleyicinizin, gezinme denetleyicisinin kök görüntüleme denetleyicisi olup olmadığını kontrol edin. Görünüm denetleyicisini doğrudan bir denetleyici görünümü olarak doğrudan görüntüleyemezsiniz. Görünüm denetleyicinizi bir gezinme denetleyicisinin kök görüntü denetleyicisi olarak yapmak ve sonra gezinti denetleyicinizi modal görüntü denetleyicisi olarak sunmak zorundasınız.

// Create the root view controller for the navigation controller 
// The new view controller configures a Cancel and Done button for the 
// navigation bar. 
YourViewController *addController = [[YourViewController alloc] 
        init]; 

// Configure the YourViewController. 

// Create the navigation controller and present it. 
UINavigationController *navigationController = [[UINavigationController alloc] 
         initWithRootViewController:addController]; 
[self presentViewController:navigationController animated:YES completion: nil]; 
4

benim durumumda sorun Navigasyon kontrolör burada ifadesi asla ise

Yani bu

enter image description here