2017-02-10 4 views
1

У меня есть эти 3 (три) UIButton с два изображения (active.png и notactive.png)Как установить кнопку состояние изображения в Swift 3

Official 
Personal 1 
Personal 2 

Моя цель, когда я выбираю один кнопки, изображение устанавливается в active.png в то время как две другие кнопки устанавливается в notactive.png

И выбранная кнопка магазин на выходе UILabel

Цените, если кто-то может помочь.

button.swift

импорт UIKit

класс ViewController: UIViewController {

// MARK: Outlets 

@IBOutlet var officialButton: UIButton! 
@IBOutlet var personal1button: UIButton! 
@IBOutlet var personal2button: UIButton! 
@IBOutlet var outputLbl: UITextField! 

// MARK: Properties 

var output: String! 
var buttons: [UIButton] { 
    return [officialButton, personal1button, personal2button] 
} 

// MARK: Lifecycle 

override func viewDidLoad() { 

    super.viewDidLoad() 

    buttons.forEach { 
     $0.addTarget(self, action: #selector(didTouchUpInside(button:)), for: .touchUpInside) 
     $0.setImage(UIImage(named: "notactive"), for: .normal) 
     $0.setImage(UIImage(named: "active"), for: .selected) 
    } 
} 

// MARK: Methods 

func didTouchUpInside(button: UIButton) { 

    buttons.forEach { $0.isSelected = false } 
    button.isSelected = !button.isSelected 

    outputLbl.text = nil 

    if button.isSelected { 
     outputLbl.text = button.currentTitle 
    } 
    else if officialButton.isSelected { 
     outputLbl.text = "Official" 
    } 
    else if personal1Button.isSelected { 
     outputLbl.text = "P1" 
    } 
    else if personal2Button.isSelected { 
     outputLbl.text = "P2" 
    } 
} 

}

Спасибо.

ответ

2
import UIKit 

class ViewController: UIViewController { 

    // MARK: Outlets 

    @IBOutlet var officialButton: UIButton! 
    @IBOutlet var personal1button: UIButton! 
    @IBOutlet var personal2button: UIButton! 
    @IBOutlet var outputLbl: UITextField! 

    // MARK: Properties 

    var output: String! 
    var buttons: [UIButton] { 
     return [officialButton, personal1button, personal2button] 
    } 

    // MARK: Lifecycle 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     buttons.forEach { 
      $0.addTarget(self, action: #selector(didTouchUpInside(button:)), for: .touchUpInside) 
      $0.setImage(UIImage(named: "notactive"), for: .normal) 
      $0.setImage(UIImage(named: "active"), for: .selected) 
     } 
    } 

    // MARK: Methods 

    func didTouchUpInside(button: UIButton) { 

     buttons.forEach { $0.isSelected = false } 
     button.isSelected = !button.isSelected 

     outputLbl.text = nil 

     if button.isSelected { 
      outputLbl.text = button.currentTitle 
     } 
    } 
} 
+1

Спасибо. Сначала я попробую. Я дам вам знать, если его работа – Jamilah

+0

дает ошибку на "buttons.forEach {$ 0.isSelected = false}" – Jamilah

+0

$ 0 стоит? я не понимаю, что часть – Jamilah

1
class ViewController: UIViewController { 

    @IBOutlet var officialButton: UIButton! 
    @IBOutlet var personal1button: UIButton! 
    @IBOutlet var personal2button: UIButton! 

    @IBOutlet var outputLbl: UITextField! 

    var output: String! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     officialButton.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside) 
     personal1button.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside) 
     personal2button.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside 
    } 

func pressButton(button: UIButton) { 
     officialButton.setImage(UIImage(named: "notactive"), for: .selected) 
     personal1button.setImage(UIImage(named: "notactive"), for: .selected) 
     personal2button.setImage(UIImage(named: "notactive"), for: .selected) 
     button.setImage(UIImage(named: "active"), for: .selected) 
     outputLbl.text = button.titlelable 
} 
} 
+0

Спасибо за отзыв. Сначала попробую :) – Jamilah

+0

как-то изображение не меняется, когда я нажимал одну из кнопок. я не уверен, почему – Jamilah

+0

попробуйте его для .Normal на месте .selected – Ram

Смежные вопросы