У меня есть две кнопки UIB, одна для FM-радио и одна для AM-радио. Когда кнопка FM нажата, я хочу отобразить значения FM для названия станции, частоты и значений ширины полосы в соответствующих ярлыках, а также для AM.
У меня был рабочий код с использованием отдельного метода buttonClick для каждой кнопки, но, поскольку код был идентичен, я хотел попробовать сделать все это внутри одного метода. Эта мерзость ниже!
Вот код прямо сейчас для метода нажатия кнопки.
@IBAction func buttonClick(_ sender: Any) {
if buttonFM != nil {
if myStation.isBandFM() == 1 {
stationBand.text = "FM1"
stationName.text = myStation.name //set top left label text to name property of myStation object
stationFrequency.text = "\(myStation.frequency)"
}
} else if buttonAM != nil {
if myStation.isBandFM() == 0 {
stationBand.text = "AM1" //final exercise, part 1.
stationName.text = myStationAM.name
stationFrequency.text = "\(myStationAM.frequency)"
}
}
}
Это весь код контроллера представления:
class ViewController: UIViewController {
@IBOutlet weak var stationName: UILabel!
@IBOutlet weak var stationFrequency: UILabel!
@IBOutlet weak var stationBand: UILabel!
@IBOutlet weak var buttonFM: UIButton!
@IBOutlet weak var buttonAM: UIButton!
var myStation: RadioStation //FM station
var myStationAM: RadioStation //AM station
required init?(coder aDecoder: NSCoder) {
myStation = RadioStation()
myStationAM = RadioStation()
myStation.frequency = 104.7
myStationAM.frequency = 800.2
myStation.name = "FM1"
myStationAM.name = "AM1"
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
stationName.text = nil
}
@IBAction func buttonClick(_ sender: Any) {
if buttonFM != nil {
if myStation.isBandFM() == 1 {
stationBand.text = "FM1"
stationName.text = myStation.name //set top left label text to name property of myStation object
stationFrequency.text = "\(myStation.frequency)"
}
} else if buttonAM != nil {
if myStation.isBandFM() == 0 {
stationBand.text = "AM1" //final exercise, part 1.
stationName.text = myStationAM.name
stationFrequency.text = "\(myStationAM.frequency)"
}
}
}
И это метод класса :
class RadioStation: NSObject {
var name: String
var frequency: Double
override init() { //init class method to set default values.
name = "Default"
frequency = 100
}
static var minAMFFrequency: Double = 520.0
static var maxAMFFrequency: Double = 1610.0
static var minFMFFrequency: Double = 88.3
static var maxFMFFrequency: Double = 107.9
func isBandFM() -> Int {
if frequency >= RadioStation.minFMFFrequency && frequency <= RadioStation.maxFMFFrequency {
return 1 //FM
} else {
return 0 //AM
}
}