0

ユーザーが見たいカテゴリを選択するために提供される3つのボタンがあります。

それらは以下のように定義されています。

 //outlets
@IBOutlet weak var ChineseButton: UIButton!
@IBOutlet weak var IndianButton: UIButton!
@IBOutlet weak var MexicanButton: UIButton!

これらのボタンには以下のアクションがあります(元の画像ボタンをグレーアウトしたバージョンに変更します):

//行動

@IBAction func ChineseButtonPressed(sender: UIButton)
{

    ChineseButton.setImage(UIImage(named: "chinese.png"), forState: UIControlState.Normal)
    ChineseButton.setImage(UIImage(named: "chinese.png"), forState: UIControlState.Selected)
    IndianButton.setImage(UIImage(named: "grey-indian.png"), forState: UIControlState.Normal)
    MexicanButton.setImage(UIImage(named: "grey-mexican.png"), forState: UIControlState.Normal)

}
@IBAction func EightFacedButtonPressed(sender: UIButton) {
         IndianButton.setImage(UIImage(named: "indian.png"), forState: UIControlState.Normal)
IndianButton.setImage(UIImage(named: "indian.png"), forState: UIControlState.Selected)
    ChineseButton.setImage(UIImage(named: "grey-chinese.png"), forState: UIControlState.Normal)

    MexicanButton.setImage(UIImage(named: "grey-mexican.png"), forState: UIControlState.Normal)
}

@IBAction func TweleveFacedButtonPressed(sender: UIButton) {
    MexicanButton.setImage(UIImage(named: "mexican.png"), forState: UIControlState.Normal)
MexicanButton.setImage(UIImage(named: "mexican.png"), forState: UIControlState.Selected)
    ChineseButton.setImage(UIImage(named: "grey-chinese.png"), forState: UIControlState.Normal)
    IndianButton.setImage(UIImage(named: "grey-indian.png"), forState: UIControlState.Normal)   
}

このアクション関数は UIControlState も決定します。クリックすると別のページに移動する別のボタンがありますが、どのボタンが選択されたかを理解する必要があります。

私は以下を試しましたが、どのボタンが選択されたかを認識していないようです?

 @IBAction func GenerateButton(sender: UIButton) {
        if ChineseButton.selected == true{
            println("Chinese button was selected")
        }

私はswiftが初めてなので、どんな助けでも大歓迎です!

ありがとう :)

4

1 に答える 1

1

ボタンを選択しているのではなく、画像を変更しているだけです。

まず、すべてのコードを簡素化し、画像を一度設定して、通常はグレー表示にし、選択状態を色分けします。

override func viewDidLoad() {
    super.viewDidLoad()

    MexicanButton.setImage(UIImage(named: "mexican.png"), forState: UIControlState.Normal)
    MexicanButton.setImage(UIImage(named: "grey-mexican.png"), forState: UIControlState.Selected)
    ChineseButton.setImage(UIImage(named: "grey-chinese.png"), forState: UIControlState.Normal)
    ChineseButton.setImage(UIImage(named: "chinese.png"), forState: UIControlState.Selected)
    IndianButton.setImage(UIImage(named: "grey-indian.png"), forState: UIControlState.Normal)
    IndianButton.setImage(UIImage(named: "indian.png"), forState: UIControlState.Selected) 
}

ストーリーボードでこれを構成して、アイコンImageの別の場所で変更することもできます。State Configs

ここに画像の説明を入力

次に、各アクションでボタンを選択するだけで、正しい画像が表示されます (すべてのボタンに同じアクションを使用できます)。

@IBAction func AnyButtonPressed(sender: UIButton) {
    // Deselect all buttons but the pressed one
    for button in [ChineseButton, IndianButton, MexicanButton] {
        button.selected = sender === button
    }
}
于 2015-11-06T16:34:54.057 に答える