prepare(segue)メソッドでデータを渡そうとしましたが、ReceiverViewControllerで渡されたデータを取得できません。私はインスタンス全体をより良く渡すことができ、可能かどうかわからないのだろうか。 私はSwiftの初心者です。これが私の最初の試行です。アドバイスは大歓迎です。複数のコントローラ間でsegueを用意して特定のキー/値を渡す
私が使用したいクラスは以下の通りです - UserClass.swift:
class User {
var firstname: String
var lastname: String
var role: Int
init(firstname: String, lastname: String, role: Int) {
self.firstname = firstname
self.lastname = lastname
self.role = role
}
}
マイここFirstViewController.swift
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "loadBoard" {
if let dVC = segue.destination as? ReceiverViewController {
dVC.code?.firstname = anotherValue
//Following show me nil
print("Sent data \(dVC.code?.firstname)")
}
}
}
上のメソッドを用意し、私はデータを取得しようとしましたものです - ReceiverViewController .swift:
var code: User?
if let test = self.code?.firstname {
self.categoryLabel.text = code?.firstname
print(code)
} else {
print("Something wrong")
}
あなたのコードのどこかで 'code'プロパティを初期化していますか? – Kymer
インスタンス全体を渡します。それは動作するはずです。 –
コントローラー間でデータをやりとりするのは難しくありませんが、ちょっと混乱するかもしれません。 [この例](https://github.com/ryantxr/legendary-potato)には、それを行う方法が示されています。 – ryantxr