私は気にせず、ビューコントローラ間でデータをやりとりし、それに沿ってfirebaseを使う方法を学ぼうとしています。これは新しいコントローラへの私のセグメントで、私が押しているビューコントローラ上の変数を設定しています。ビューコントローラ間で変数を設定する
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let viewController = storyboard?.instantiateViewController(withIdentifier: "UserInfoViewController") as! UserInfoViewController
viewController.uidPassed = userUIDArray[indexPath.row]
self.present(viewController, animated: true, completion: nil)
}
変数が新しい文字列として宣言されている新しいコントローラに接続します。私はこれを実行するために行くと、それは文字列が空であると言ってそれがクラッシュする。私はそれを印刷することができ、それはviewDidAppearメソッドでは空ですが、前のコントローラでクリックしたときの変数に格納されているUIDを持つviewDidLoadメソッドです。あるビューコントローラから別のビューコントローラに変数を正しく渡していないのですか?
override func viewDidAppear(_ animated: Bool) {
databaseRef.child("Users").child(self.uidPassed).child("Name").observe(.value, with: { (snapshot) in
let name = snapshot.value as! String
print(name)
})
コードが正しいように見えます。 'didSelectRowAt'メソッドでそのuidPassedを印刷しようとしましたか?あなたのストーリーボードでは、これら2つのView ControllerをSegueで接続していませんか? –
それはそれでした。私はセグーでそれらを接続していた。私はそれを削除し、それは今完璧に実行されます。 – user3103854
私はそれを包んで答えに入れます。基本的には、2つのデータ渡しメソッドを組み合わせていて、明らかにそれがうまくいきません。期待していること –