Прежде всего, вам необходимо подтвердить, что:
- Вы подключили
CreateNewAccount
к ThanksForJoining
через segue.
- Идентификатор segue правильно установлен на
thanksForJoining
(Будьте осторожны с буквами.)
Если что-то из этого не соответствует действительности, вы потеряли немного времени, а я потерял время на подготовку к большому тайфуну. Обновите свой вопрос, чтобы уточнить, что происходит, и подождите, пока кто-нибудь вам поможет ...
Предполагая две вещи выше, prepare(for:sender:)
вызывается на контроллере представления источника. Вам нужно реализовать это в вашем CreateNewAccount
классе.
CreateNewAccount:
import UIKit
class CreateNewAccount: UIViewController {
@IBOutlet weak var firstNameInput: UITextField!
@IBOutlet weak var lastNameInput: UITextField!
@IBOutlet weak var usernameInput: UITextField!
@IBOutlet weak var passwordInput: UITextField!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "thanksForJoining" {
let destinationVC = segue.destination as! ThanksForJoining
if
let firstName = firstNameInput.text, !firstName.isEmpty,
let lastName = lastNameInput.text, !lastName.isEmpty,
let username = usernameInput.text, !username.isEmpty,
let password = passwordInput.text, !password.isEmpty
{
destinationVC.receiveUserInfo(firstName: firstName, lastName: lastName, username: username, password: password)
}
}
}
}
ThanksForJoining:
import UIKit
class ThanksForJoining: UIViewController {
var firstName: String?
@IBOutlet weak var firstNameLabel: UILabel!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
firstNameLabel.text = firstName
}
func receiveUserInfo(firstName: String, lastName: String, username: String, password: String) {
print(firstName)
self.firstName = firstName
}
}
Кажется, что шаблон делегата слишком важен для вашей цели, и вам просто нужно определить метод передачи данных в контроллере представления назначения ThanksForJoining
.
Полагаю, вы подключили свой переход с какой-то кнопки вашего CreateNewAccount
. Если segue подключен от контроллера представления (не от кнопки), приведенный выше код нуждается в небольшой модификации.
Но в любом случае, в вашем исходном коде метод prepare(for:sender:)
в ThanksForJoining
никогда не будет вызван, поэтому делегат никогда не будет установлен. Таким образом, делегат остается nil
.