2015-04-21 222 views
2

我知道這個問題之前已經被問到過,並且我發現了兩個不同的代碼行,它們聲稱在導航欄中的欄按鈕項的標識符中執行更改。兩者都編譯,但對標識符沒有任何影響。我將標識符設置爲「播放」按鈕啓動程序,並將其更改爲「暫停」按鈕。我已經在viewDidLoad()和裏面運行了這兩行代碼在導航欄欄按鈕中更改按鈕標識

IBAction func startButton(sender: AnyObject) { 

這是代碼。誰能告訴我爲什麼按鈕標識不變?而且,正確的按鈕/左按鈕看起來很明顯,或者在我沒有得到的代碼中存在某些關於單詞的內容。

self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "startButton:") 

self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "startButton"), animated: true) 

這是整個viewDidLoad,它也不起作用。

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "startButton:") 
} 

回答

0

嘗試下面的代碼在UINavigationBar

override func viewDidLoad()切換按鈕寫道

self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem:UIBarButtonSystemItem.Play, target: self, action:Selector("startButton:")) 

和按鈕

@IBAction func startButton(sender: UIButton!) { 

    self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "stopButton:"), animated: true) 
} 

@IBAction func stopButton(sender: UIButton!) { 

    self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "startButton:"), animated: true) 
} 

@Bendrix創建兩個@IBAction,你可以看到代碼我試過my view controller code 並在模擬器中運行此代碼後的視頻app in simulator

+0

我試過了,它對按鈕沒有任何影響。我很好奇,對於一個按鈕有兩個不同的操作,系統將如何知道要執行哪個操作。我添加了一個bool開關,因此它應該只執行一個代碼塊或另一個代碼塊,但是我的問題是,當您按下按鈕時,兩個代碼塊都會運行?無論如何,這是行不通的。你試過了嗎?在最簡單的情況下,UEViewDidLoad中的單行應該更改按鈕標識符(如果可以的話)。仍然需要幫助。 – Bendrix

+0

顯然,我嘗試過....這裏有兩個不同的按鈕,它們各自的操作......只是將它們用作您的需要。或者你可以通過使用bool標誌只用一個動作來改變按鈕。 – VRAwesome

+0

我可能會感到困惑。回答文字說「併爲按鈕創建兩個@IBAction」,並在上面的評論中說,「兩個不同的按鈕分別帶有相應的動作」。爲了澄清,那麼,上面的答案有兩個不同的按鈕,都在leftBarButtonItem位置?你能覆蓋這樣的按鈕嗎?即使使用兩個IBAction作爲一個按鈕,也無法在理論上來回切換控制。如果你有兩個一個項目,我不知道編譯器如何知道要運行哪個IBActions。如果您發佈整個解決方案的代碼,這將有所幫助。 – Bendrix