12

我很抱歉我是iphone編程新手。導航項目沒有出現在視圖控制器

我已經創建了一個Master-Detail Iphone應用程序(所以導航控制器附帶了該項目)。我繼續使用通過masterviewcontroller上的UIBarButtonItem創建的新視圖控制器。然而,與detailviewcontroller(與該項目一起提供)不同,我似乎無法讓導航項(或導航欄?)顯示在視圖上,即使它出現在我的故事板的場景列表中。

繼承人一些代碼和截圖:在我masterviewcontroller.m

在我masterviewcontroller.m viewDidLoad中()函數

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

我嘗試添加標題到navigationitem期間創建的新viewcontroller.m類viewDidLoad函數(在Link中提到,但它沒有工作)

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

但它仍然在我的故事板顯示出來(它顯示在場景下,但不會在視圖中顯示的列表)

所以我的問題是,爲什麼它現在顯示出來,以及如何我能得到它嗎?我想要一個像我的詳細視圖控制器一樣的後備按鈕,它與主細節項目一起提供。

編輯#1

我添加了一個檢查導航控制器是否是零,它不是零(if語句是從未進入)我也試圖改變導航項目備份和刪除,並沒有一個工作。

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

現在,我有足夠的聲譽顯示的圖像,我可以顯示導航項目顯示在列表中,但犯規出現在視圖

enter image description here

+0

的,如果這裏聲明是永遠輸入,因爲文檔說,self.navigationItem是即時創建的。 –

回答

12

的導航項目沒有顯示因爲我SEGUE的「風格」了。

將場景從主視圖控制器移動到設置視圖控制器的segue被設置爲'模態'。它必須設置爲'推'。這是從故事板完成的事業窗格

1

已驗證了您的列在viewDidLoad方法中的導航控制器不是零?

假設你確實有一個非零的self.navigationItem,看起來你是不正確地將你的self.navigationItem.leftBarButtonItem設置爲editButtonItem,而是嘗試一起刪除這一切!

如果刪除它並沒有解決問題的嘗試:

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

你必須這樣做是爲了改變你的Segue公司風格:

  • 在故事板中選擇Segue公司;
  • 轉到屬性檢查器(在右窗格選項卡上);
  • 將樣式屬性更改爲推送。

它將使屏幕從右到左滾動,導航欄將顯示爲滑動。 對於Modal,屏幕從底部到屏幕的頂部,並且不會顯示導航欄。

0

請檢查您的視圖控制器是否是導航控制器的根視圖控制器。你不能直接展示視圖控制器作爲模態視圖控制器。您必須將視圖控制器作爲導航控制器的根視圖控制器,然後將導航控制器作爲模態視圖控制器呈現。

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

在我的情況的問題是,導航控制器不是「初始視圖控制器」

所以我不得不這樣做

enter image description here

相關問題