UButton с подклассами со свойствами не меняет интерфейс - PullRequest
0 голосов
/ 29 октября 2018

У меня есть очень простой подкласс UIButton с 1 атрибутом: bgPropertyColor. В раскадровке есть 3 кнопки, которые имеют выходы для этого подкласса.

Я бы хотел иметь возможность настроить атрибут bgPropertyColor в контроллере вида. В моем примере ниже у меня есть доступ к атрибуту bgPropertyColor, но цвета (красный / синий / зеленый) не применяются к фону кнопок, как я намереваюсь.

UIButton

class CustomButton:UIButton {

    var bgPropertyColor = UIColor.clear

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.backgroundColor = bgPropertyColor
    }

}

ViewController

class ViewController: UIViewController {

    @IBOutlet weak var b1: CustomButton!
    @IBOutlet weak var b2: CustomButton!
    @IBOutlet weak var b3: CustomButton!


    override func viewDidLoad() {
        super.viewDidLoad()
        b1.bgPropertyColor = .red
        b2.bgPropertyColor = .blue
        b3.bgPropertyColor = .green
    }

}

Как я могу инициализировать подклассные кнопки, чтобы я мог точно настраивать свойства (цвет фона) для каждой из них, прямо на View Controller?

1 Ответ

0 голосов
/ 29 октября 2018

Вам может понадобиться

var bgPropertyColor : UIColor = UIColor.clear {
  didSet {
    self.backgroundColor  = bgPropertyColor 
  }
}

как изменение bgPropertyColor не будет отражать до backgroundColor, как вы могли ожидать, также может быть свойство бесполезно, так как вы можете изменить backgroundColor непосредственно в IB / Code

...