2015-07-20 40 views
1

我的導航欄右側有一個按鈕,它是一個Done按鈕。我在故事板上創建了它。我試圖在代碼中禁用它。我怎樣才能訪問這個按鈕?在代碼中訪問導航欄按鈕

+0

您確實需要添加[Mcve](http://stackoverflow.com/help/mcve)來幫助解釋您的問題。 –

回答

4

有兩種方式做到這一點:

  1. 正如你已經創建了使用界面生成器的按鈕,那麼你可以聲明@IBOutlet,用於它使用拖和Xcode和的/降效用禁用/隱藏以下列方式中的導航欄按鈕:

    // hide the button 
    self.rightButton.hidden = true 
    
    // disable the button 
    self.rightButton.enabled = false 
    
    // change its title 
    self.rightButton.setTitle("NEW TITLE", forState: .Normal) 
    

    @IBOutlet是這樣的:

    @IBOutlet weak var rightButton: UIButton! 
    
  2. 如果你不想宣佈任何@IBOutlet可以設置self.navigationItem.rightBarButtonItemnil在你想詮釋這樣任何地方:

    // remove the button 
    self.navigationItem.rightBarButtonItem = nil 
    
    // disable the button 
    self.navigationItem.rightBarButtonItem?.enabled = false 
    

    並且上面的代碼禁用了您設置的任何以前的按鈕。

我希望這對你有所幫助。

+0

如果我有一個連接到這個按鈕的'@ IBAction',我可以連接一個'@ IBOutlet'嗎? – MortalMan

+0

當然可以!你能行的。 –

+0

我明白了。謝謝!還有一個問題 - 我現在可以禁用和啓用按鈕。但爲什麼我不能打印標題或更改標題?我應該在代碼中創建按鈕嗎? – MortalMan

0
navigationItem.rightBarButtonItem? 
+0

我試過'print(navigationItem.rightBarButtonItem!.title)',結果是零。 – MortalMan

-1

嘗試在您的視圖控制器創建出口: @IBOutlet弱VAR doneButton:的UIBarButtonItem! 將barbuttonItem鏈接到故事板中的doneButton變量。

分配值爲false時禁用它。 在視圖做負載:

doneButton.enabled =假

0
if let iuRightNavigationButton = self.navigationItem.rightBarButtonItem 
{ 
iuRightNavigationButton.enable = false 
} 

它基本上會檢查rightBarbutton項目,如果有那麼它disables.You不需要任何聲明IBOutlet中做到這一點