2016-09-23 9 views
1

fiveMinButtonをクリックしたときに、fiveMinButtonとtenMinButtonのbackgroundColorを変更するだけです。なぜこのコードは機能しませんか? @IBActionも機能しません。あなたがのviewDidLoad内のアクションメソッドを書いているボタン1をクリックするとすぐにボタン2の色が変わりますか?

@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

あり得るために、ボタンに背景画像や画像を設定することができますあなたのコードに2つの問題があります。

  1. selectorの構文が間違っ
  2. であるあなたはまた間違った意志viewDidLoadの内側にあなたのボタンのアクションを追加したので、クラスメソッドとしてviewDidLoad外にその方法を記述しています。

このような最初の変更セレクタの場合。

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

第2の問題は、外にアクションを書き込むだけです。viewDidLoad

+0

'fiveMinButton.addTarget(self、action:#selector(action:sender :)):UIControlEvents.touchUpInside)'は正しい構文です。 – grant

+0

ウェルカムメイト:) –

+0

ポイント3が間違っています。チェックは 'sender'と' fiveMinButton'が同じ参照であるかどうかを調べるため、 '==='の使用は正しいです。 – rmaddy

1

、このお試しください:..Color RECT丸みを帯びたボタンの種類が適用できない場合

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

を。だから、カスタム入力するボタンを設定すると良い

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

関連する問題