Что должно делать приложение:
1) Пользователь вводит слово в текстовое поле и нажимает соответствующую кнопку
2) Приложение должно перейти к другомусцена, содержащая две метки. Один должен отображать слово, набранное пользователем, другой идентифицирует нажатую кнопку. Эти фрагменты данных должны быть переданы через свойства на принимающем ViewController.
Что он на самом деле делает:
1) Сегмент вызывается немедленно, очевидно, в обход prepare(segue: sender:)
2) Обе метки не заполнены
3) Точки останова и print()
указывают, что prepare(segue: sender:)
никогда не вызывается
Что я проверял / пробовал:
1) Кнопки имеют правильные теги в раскадровке, согласно моим print()
заявлениям
2) Я заменил if else
на switch
3) Я почти уверен, что прочитал все связанные вопросы и ответы на SO
4) Переключен sender
в prepare(segue: sender:)
с Any?
на UIButton
и обратно
Код
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var tf2: UITextField!
@IBOutlet weak var tf3: UITextField!
@IBOutlet weak var tf4: UITextField!
@IBAction func sendButton(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
@IBAction func button2(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
@IBAction func button3(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
@IBAction func button4(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
func prepare(for segue: UIStoryboardSegue, sender: UIButton) {
print("Inside prepare for segue")
print("sender.tag is \(sender.tag)")
if segue.identifier == "mySegue" {
let vc = segue.destination as! SecondViewController
print("sender.tag is \(sender.tag)")
switch sender.tag {
case 101:
if (textField.text?.count)! >= 1 {
vc.staticText = "Button 101"
vc.textProp = self.textField.text!
print("sender.tag is \(sender.tag)")
}
case 102:
if (tf2.text?.count)! >= 1 {
vc.staticText = "Button 102"
vc.textProp = self.tf2.text!
print("sender.tag is \(sender.tag)")
}
case 103:
if (tf3.text?.count)! >= 1 {
vc.staticText = "Button 103"
vc.textProp = self.tf3.text!
print("sender.tag is \(sender.tag)")
}
case 104:
if (tf4.text?.count)! >= 1 {
vc.staticText = "Button 104"
vc.textProp = self.tf4.text!
print("sender.tag is \(sender.tag)")
}
default:
print("Something went wrong")
}
// print("In FirstVC, vc.textProp = \(vc.textProp)")
}else{
print("No text in textField...")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Признаюсь заранее, что я довольно хорошо пропускаю очевидное, но я потратил много времени, прежде чем задавать вам, ребята. Буду очень признателен за любую помощь или направление ...
Спасибо!