2015-11-06 5 views
0

У меня есть 3 кнопки, которые предоставляются пользователю для выбора категории, которую они хотят видеть.Быстрое UIControlState.Selected остается выбранным?

Они определяются как ниже:

//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") 
     } 

Я новый, чтобы быстро, поэтому любая помощь будет оценена!

Спасибо :)

ответ

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 из значок:

enter image description here

Затем на каждое действие, вы можете просто нажать кнопку, и правильное изображение будет показано (вы можете использовать те же действия для всех переключата ns):

@IBAction func AnyButtonPressed(sender: UIButton) { 
    // Deselect all buttons but the pressed one 
    for button in [ChineseButton, IndianButton, MexicanButton] { 
     button.selected = sender === button 
    } 
} 
+0

Hi! Спасибо за вашу помощь. Я обновил свой код выше, но теперь он показывает только 1 кнопку, поэтому я думаю, что я где-то ошибся. Am я заменить содержимое из всех моих функций действий с: «// Удалить все кнопки, но прессованные один для кнопки в [ChineseButton, IndianButton, MexicanButton] { button.selected = отправителя === Кнопка }» ? –

+0

Все ваши кнопки могут вызывать одно и то же действие, не нужно настраивать действие для каждой кнопки, если все они делают то же самое. Может быть, вы заменили метод 'viewDidLoad'? Вы должны добавить строки, а не заменять то, что у вас было. – redent84

+0

Спасибо, что у меня есть это для работы сейчас. Единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что пользователь хочет перейти с китайского на индийский, это не позволит, так как китайская кнопка уже выбрана. –