2016-07-18 124 views
0

我有一個UIViewContoller有意不嵌入在UINavigationController中,我想在導航區域添加自定義按鈕。我相信我寫的代碼應該可以工作,因爲它遵循我在幾個關於UIBarButtonItem的主題中找到的建議方法(這些主要與樣式有關)。這裏是我的代碼:UIBarButtonItems不會出現在導航欄中

override func viewDidLoad() { 
    super.viewDidLoad() 

    let settingsButton = UIBarButtonItem(title: "Settings", style: .Plain, target: self, action: #selector(self.segueToSettings(_:))) 
    let saveToLogButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(self.logThisLift(_:))) 
    let viewLogButton = UIBarButtonItem(title: "Log", style: .Plain, target: self, action: #selector(self.segueToLog(_:))) 

    self.navigationItem.leftBarButtonItem = settingsButton 
    self.navigationItem.rightBarButtonItems = [viewLogButton, saveToLogButton] 
    } 

和這裏的結果(與景觀的層次結構可見太):

enter image description here

我想也許我需要在故事板添加欄按鈕項目,但是這似乎擊敗像我正在努力做的代碼的目的。

我試着調試視圖層次結構,我也沒有看到它們。

有誰知道爲什麼這些不會出現?

+0

嘗試添加它在viewDidAppear()而不是視圖確實加載,看看會發生什麼:) – Konsy

回答

2

在您的代碼中,您使用self.navigationItem,但由於您的控制器未嵌入到導航控制器中,因此您沒有導航項目。

您已添加導航欄,但需要添加導航項目。

您必須將導航項拖到導航欄,然後綁定到代碼(通過插座)。它應該是這樣的後:

@IBOutlet weak var navItem: UINavigationItem! 

然後你就可以說:

self.navItem.leftBarButtonItem = settingsButton 
self.navItem.rightBarButtonItems = [viewLogButton, saveToLogButton] 

你應該看到它在文檔大綱是這樣的:

Navigation item