Я пытаюсь создать переключатели с некоторыми атрибутами (закругленные углы, тени и т. Д. c.).
Без установки значения по умолчанию radioController.defaultButton = button1
атрибуты кнопки не отображаются, пока я не выберу один из кнопки.
Если я установлю кнопку по умолчанию, все будет работать нормально.
Почему это ???
import UIKit
class ViewController: UIViewController {
@IBOutlet var button1: UIButton!
@IBOutlet var button2: UIButton!
@IBOutlet var button3: UIButton!
let radioController: RadioButtonController = RadioButtonController()
override func viewDidLoad() {
super.viewDidLoad()
radioController.buttonsArray = [button1, button2, button3]
// ****************************
radioController.defaultButton = button1
}
@IBAction func button1Action(_sender: UIButton) {
radioController.buttonArrayUpdated(buttonSelected: _sender)
}
@IBAction func button2Action(_sender: UIButton) {
radioController.buttonArrayUpdated(buttonSelected: _sender)
}
@IBAction func button3Action(_sender: UIButton) {
radioController.buttonArrayUpdated(buttonSelected: _sender)
}
}
class RadioButtonController: NSObject {
var buttonsArray: [UIButton]!
{
didSet {
for b in buttonsArray {
// rounded corners
b.layer.cornerRadius = 8.0
// add shadow
b.layer.shadowColor = UIColor.black.cgColor
b.layer.shadowOffset = CGSize(width: 0, height: 3)
b.layer.shadowOpacity = 0.3
b.layer.shadowRadius = 6.0
b.layer.masksToBounds = false
}
}
}
var selectedButton: UIButton?
var defaultButton: UIButton = UIButton() {
didSet {
buttonArrayUpdated(buttonSelected: self.defaultButton)
}
}
func buttonArrayUpdated(buttonSelected: UIButton) {
for b in buttonsArray {
if b == buttonSelected {
selectedButton = b
b.isSelected = true
// default colors for state
b.backgroundColor = .black
}
else {
b.isSelected = false
// default colors for state
b.backgroundColor = .white
}
}
}
}
Xcode 10, Swift 4