I am learning to code with swift. I am reading the free book from Apple Education titled "Develop In Swift Fundamentals". I am on the chapter titled "Controls In Action" and the section of the chapter I'm stuck on is titled "Programmatic Actions" (page 287).
The section has me connect a UIButton programmatically by first manually typing in the @IBOutlet for the UIButton then connecting the button using this code below.
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
I pasted this code right after the viewDidLoad function, however I get 6 red errors. I don't know what I did wrong. How do I connect a control to a method programmatically?
I've attached a link to the Github repository if you want to download the code and run it in Xcode.
The github repository
import UIKit
class ViewController: UIViewController {
@IBOutlet var toggle: UISwitch!
@IBOutlet var slider: UISlider!
@IBOutlet var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
}
@IBAction func buttonTapped(_ sender: Any) {
print("Button was tapped!")
if toggle.isOn {
print("The switch is on!")
} else {
print("The switch is off.")
}
print("The slider is set to \(slider.value).")
}
@IBAction func switchToggled(_ sender: UISwitch) {
if sender.isOn {
print("Switch is on!")
} else {
print("Switch is off!")
}
}
@IBAction func sliderValueChanged(_ sender: UISlider) {
print(sender.value)
}
@IBAction func keyboardReturnKeyTapped(_ sender: UITextField) {
if let text = sender.text {
print(text)
}
}
@IBAction func textChanged(_ sender: UITextField) {
if let text = sender.text {
print(text)
}
}
@IBAction func respondToTapGesture(_ sender: UITapGestureRecognizer) {
let location = sender.location(in: view)
print(location)
}
}