2016-09-23 44 views
1

當我點擊五個按鈕時,我想要做的就是改變五個按鈕和十個按鈕的backgroundColor。爲什麼這個代碼不工作? @IBAction也不起作用。如何在單擊button1時快速更改button2的顏色?

@IBOutlet weak var fiveMinButton: UIButton! 



override func viewDidLoad() { 
    super.viewDidLoad() 

    fiveMinButton.addTarget(self, action: Selector(("action:")), for: UIControlEvents.touchUpInside) 

    func action(sender: UIButton){ 

     if sender === fiveMinButton { 

      fiveMinButton.backgroundColor = UIColor.gray 
      tenMinButton.backgroundColor = UIColor.lightgray 

     } 

    } 

回答

1

有是你的代碼有兩個問題。

  1. selector語法是錯誤的
  2. 您已經添加了您的按鈕的動作viewDidLoad內,這將也是錯誤的,所以寫的viewDidLoad之外的方法類方法。

對於第一個像這樣的變化選擇器。

fiveMinButton.addTarget(self, action: #selector(action(sender:)), for: UIControlEvents.touchUpInside) 

對於第二個問題,只需寫出viewDidLoad的行動。

+0

'fiveMinButton.addTarget(self,action:#selector(action(sender :)),for:UIControlEvents.touchUpInside)'是正確的語法。修復了我的解決方案 – grant

+0

歡迎隊友:) –

+0

第3點不正確。使用'==='是正確的,因爲檢查是看'sender'和'FiveMinButton'是否是相同的引用。 – rmaddy

1

你正在寫的viewDidLoad中內部的操作方法,試試這個:

override func viewDidLoad() { 
    super.viewDidLoad() 

    fiveMinButton.addTarget(self, action: #selector(action(_:)), for: UIControlEvents.touchUpInside) 

} 

func action(sender: UIButton){ 
     if sender == fiveMinButton { 
      fiveMinButton.backgroundColor = UIColor.gray 
      tenMinButton.backgroundColor = UIColor.lightgray 
     } 
} 
+0

仍然不起作用。 – grant

+0

將'==='改爲'=='。 –

+0

應用程序仍在崩潰。錯誤日誌:'無法識別的選擇器發送到實例' – grant

0

如果按鈕類型圓角的矩形..Color不能適用。因此,設置按鈕,自定義類型和良好的去

self.myButton.backgroundColor = UIColor.redColor() 

,或者您可以將背景圖片或圖像設置爲按鈕來獲得顏色

self.myButton.setBackgroundImage(UIImage.imageNamed("myButtonImage.png"), forState: UIControlStateNormal) 

self.myButton.setImage(UIImage.imageNamed("myButtonImage.png"), forState: UIControlStateNormal) 
+0

非常不好的答案。 – grant

相關問題