У меня есть viewcontroller, который я создал. Я могу войти пользователя в мое приложение из моего API. Но я пытаюсь отобразить данные в другом контроллере представления. Я пробовал несколько разных методов, но в итоге получаю ноль. То, что я хочу отобразить, это имя пользователя на карте, но я не получаю данных.
Я попытался передать данные, вызвав их с первого контроллера представления, но они не работали правильно. Я попытался сделать это в segue, но затем получил эту переменную, но в итоге я получил nil
Контроллер первого вида
@IBAction func didTapLoginButton() {
guard
let username = usernameTextField.text,
let password = passwordTextField.text
else { return }
jsonRequest(username: username, password: password)
}
@IBOutlet weak var addUserButton: UIButton!
@objc private func editingChanged(_ textField: UITextField) {
if textField.text?.count == 1 {
if textField.text?.first == " " {
textField.text = ""
return
}
}
guard
let userName = usernameTextField.text, !userName.isEmpty,
let passWord = passwordTextField.text, !passWord.isEmpty
else {
addUserButton.isEnabled = false
return
}
addUserButton.isEnabled = true
}
func formDataRequest(username: String, password: String) {
let parameters = ["username": username,
"password": password]
networkingService.request(endpoint: "/login", parameters: parameters) { [weak self] (result) in
switch result {
case .success(let user): self?.performSegue(withIdentifier: "loginSegue", sender: user)
case.failure(let error):
let banner = StatusBarNotificationBanner(title: "Username/Password Incorrect", style: .danger)
print(error)
banner.show()
}
}
}
func jsonRequest(username:String, password: String) {
let login = Login(username: username, password: password)
networkingService.request(endpoint: "/wp-json/jwt-auth/v1/token/", loginObject: login) { [weak self] (result) in
switch result {
case .success(let user): self?.performSegue(withIdentifier: "loginSegue", sender: user)
case.failure(let error):
let banner = StatusBarNotificationBanner(title: "Username/Password Incorrect", style: .danger)
print(error)
banner.show()
}
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let mainAppVC = segue.destination as? SupportCardPartTextViewCardController, let user = sender as? User {
mainAppVC.user = user
}
}
}
Второй элемент
struct User: Decodable {
let token: String
let user_email: String
let user_nicename: String
let user_display_name: Int
}
ТретийОдин. Один я хочу данные.
class SupportCardPartTextViewCardController: CardPartsViewController {
let user: User?
let cardPartTextView = CardPartTextView(type: .normal)
override func viewDidLoad() {
super.viewDidLoad()
cardPartTextView.text = user.usernicename //Display username here instead!!!!
setupCardParts([cardPartTextView])
}
}
Я получил ноль, когда делал это. Я надеялся, есть ли другой способ сделать это. Спасибо.