Hello,
I am trying to create an iOS app with Swift in Xcode however when I try to set a label in a different view controller from the same Swift class the app just crashes.
Any help would be appreciated,
Thanks.
Code:
@IBOutlet weak var startButton: UIButton!
@IBOutlet var secondViewController: UIView!
@IBOutlet weak var welcomeBack: UILabel!
@IBOutlet weak var start: UILabel!
@IBAction func nameReset(_ sender: Any) {
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
let alertController2 = UIAlertController(title: "Name reset.", message: "Your name has been reset.", preferredStyle: UIAlertControllerStyle.alert)
alertController2.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { action in
}))
alertController2.show()
self.defaults.set(false, forKey: "customerNameSetUp")
})
}
func welcomeBackText() {
let welcomeLabel = "Welcome new user!"
start.text = welcomeLabel
}
@IBAction func onStart(_ sender: Any) {
if(!self.defaults.bool(forKey: "customerNameSetUp")) {
welcomeBackText()
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
let alertController = UIAlertController(title: "What is your name?", message: "We need your name to accommodate the app for you.", preferredStyle: UIAlertControllerStyle.alert)
alertController.addTextField { (textField) in
textField.placeholder = "Enter your name"
textField.clearButtonMode = .whileEditing
}
alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { action in
func customerNameAlert() {
let customerName = alertController.textFields![0] as UITextField
self.defaults.set(customerName.text, forKey: "customerInfoName")
let whitespaceSet = CharacterSet.whitespaces
if (customerName.text?.trimmingCharacters(in: whitespaceSet).isEmpty)! {
let failName = UIAlertController(title: "Error!", message: "Your name can not be empty!", preferredStyle: UIAlertControllerStyle.alert)
failName.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { action in
alertController.show()
}))
failName.show()
} else {
let success = UIAlertController(title: "Welcome!", message: self.defaults.string(forKey: "customerInfoName"), preferredStyle: UIAlertControllerStyle.alert)
success.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { action in
self.welcomeBack.text = String("Welcome back:" + customerName.text!)
}))
success.show()
}
self.defaults.set(true, forKey: "customerNameSetUp")
}
customerNameAlert()
}))
alertController.show()
})
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
public extension UIAlertController {
func show() {
let win = UIWindow(frame: UIScreen.main.bounds)
let vc = UIViewController()
vc.view.backgroundColor = .clear
win.rootViewController = vc
win.windowLevel = UIWindowLevelAlert + 1
win.makeKeyAndVisible()
vc.present(self, animated: true, completion: nil)
}
}