Прежде всего, создайте свойство с именем text
в вашем ThirdViewController
и установите его как buttonTitle's
title
в viewDidLoad()
следующим образом:
class ThirdViewController: UIViewController {
@IBOutlet weak var buttonTitle: UIButton!
var text: String?
override func viewDidLoad() {
super.viewDidLoad()
self.buttonTitle.setTitle(self.text, for: .normal)
}
}
Это потому, что IBOutlet не будет установлен, пока не будет вызван viewDidLoad()
. Таким образом, доступ к button
в vc2
приведет к исключению времени выполнения.
Далее ваш SecondViewController
должен выглядеть следующим образом:
class SecondViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc3 = segue.destination as? ThirdViewController {
var buttonTitle: String?
switch self.imageView.image {
case UIImage(named: "sad"): buttonTitle = "no"
case UIImage(named: "happy"): buttonTitle = "happy"
default: break
}
vc3.text = buttonTitle
}
}
}
В приведенном выше коде
В prepare(for:sender:)
установите text
из vc3
согласно imageView's
image
.
Нет необходимости создавать buttonPressed(_:)
IBAction
. Все это будет обработано в prepare(for:sender:)
.