Reputation: 219
I'm making simple exercise from App Development with Swift: Navigation and Workflows textbook, but don't understand why this code doesn't work and label text doesn't change:
import UIKit
class MiddleViewController: UIViewController {
@IBOutlet var happened: UILabel!
var eventNumber = 1
override func viewDidLoad() {
super.viewDidLoad()
if let existingText = happened.text {
happened.text = "\(existingText) \n Event number \(eventNumber) was viewDidLoad"
eventNumber += 1
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let existingText = happened.text {
happened.text = "\(existingText) 1"
eventNumber += 1
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let existingText = happened.text {
happened.text = "\(existingText)\nEvent number \(eventNumber) was viewDidAppear"
eventNumber += 1
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if let existingText = happened.text {
happened.text = "\(existingText)\nEvent number \(eventNumber) was viewWillDisappear"
eventNumber += 1
}
}
override func viewDidDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if let existingText = happened.text {
happened.text = "\(existingText)\nEvent number \(eventNumber) was viewDidDisappear"
eventNumber += 1
}
}
}
Event if I switch view controllers, label text doesn't change.
Upvotes: 0
Views: 38
Reputation: 31
You need to add
happened.numberOfLines = 0
in your viewDidLoad(). That will ensure that UILabel can have multiple lines of text.
The code in viewDidLoad():
override func viewDidLoad() {
super.viewDidLoad()
happened.numberOfLines = 0
if let existingText = happened.text {
happened.text = "\(existingText) \n Event number \(eventNumber) was viewDidLoad"
eventNumber += 1
}
}
Upvotes: 0
Reputation: 506
"(existingText)\nEvent number (eventNumber) was viewWillDisappear"
Because in above text you have used "\n" , so it display text in next line of label.Please check numberOfLines of your label. If its 1 then it will not display because text is in second line
Upvotes: 1