私が持っている問題は、prepare(forSegue:)
メソッドを呼び出すとき何が起こっているのかを理解することです。私はMainVeiwController
からSecondViewController
へのデータ転送の仕組みを得ます。特に値を渡している間に、私はSecondViewController
の@IBOUTLETをMainViewController
から初期化することはできませんが、var name:String?
のような他のオプションのプロパティをSecondViewController
のように初期化できます。それについて少しだけ興味がある。準備のLifeCycle(forSegue:....)
メインビューのクラス:2番目のビューのための
class MainViewController:UIViewController{
..
..
..
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let yourVC = segue.destinationViewController as? SecondViewController {
// this doesn't throw any error
yourVC.someData = self.someData
// this throws an error
yourVC.textLabel.text = self.someData
}
}
}
クラス:
class SecondViewController:UIViewController{
@IBOULET weak var textLabel:UILabel!
var someData:String?
..
..
..
}
何が起こってはならないと思われることが起こったのか、あるいはうまくいかなければならないと思っていることを説明してあなたの質問をしてください。 – dasblinkenlight
コンセントにどのような価値を割り当てようとしていますか? –
ビューがまだロードされていないため、IBOutletにアクセスすることはできません。'prepareForSegue'の送り先ビューコントローラで' loadViewIfNeeded'を呼び出してからIBOutletsにアクセスしてください。 – Paulw11