セグを通したデータの受け渡し方法については、多数のチュートリアルが用意されていますので、これはすばやく簡単なスニペットです。
は、ユーザ名を表示のtableViewと以下
A MasterViewControllerと仮定する。 tableViewには、UserClassオブジェクトが格納された配列dataSourceがあります。これらのオブジェクトはFirebaseから読み込まれます。
UserClass {
userName = ""
shoeSize = ""
}
詳細ラベルの付いたDetailViewController。
AセグエはのtableViewの行をタップした時に「アクティブ」を、ユーザーの表示されます。このセグエDetailViewController
にMasterViewController上のtableView上の行に関連付けられています親切詳細の表示の「showDetailを」と呼ばれますdetailViewControllerの靴のサイズ
ここに、masterViewController tableViewの行がタップされたときに呼び出されるコード(MasterViewController内)があります。変数が移入されたときにdetailViewControllerで
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let aUser = usersArray[indexPath.row]
let shoeSize = aUser.shoeSize
let controller = (segue.destination as!
UINavigationController).topViewController as! DetailViewController
controller.shoeSize = shoeSize
}
}
}
は、それが
@IBOutlet weak var shoeSizeLabel: UILabel!
func configureView() {
if let shoe = self.shoeSize {
if let label = self.shoeSizeLabel {
label.text = shoe
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.configureView()
}
var shoeSize: String? {
didSet {
self.configureView()
}
}
出典
2017-02-11 21:09:56
Jay
かなり漠然とした質問を表示するが、2つの即時のソリューションがあります。 1)最初のデータソース(配列)にデータを格納するときに、必要なデータが含まれていて、別のView Controllerにセグエングしたときに、セグを介して '余分な'データが渡されます。 2)別のView Controllerに移行するとき、Firebaseからデータをロードしてコントローラに表示します。この問題を解決するには約50の方法がありますが、特定のユースケースデータ、Firebaseの構造とコードはありません。ちょっと推測です。 – Jay
@jay Firebaseでは、私はすべての自分の投稿を保持する 'posts'という名前のサブセクションを持っています。それらの投稿は、別個のビューコントローラへのセグを有する「詳細」ボタンを有するセルのメインページに表示される。私がしたいことは、別個のView Controllerで特定の投稿を呼び出し、その投稿のデータをUI Labelに表示することです。画像:http://m.imgur.com/c7fEKks?r.png – gabe
理解しています。私のコメントの両方の提案は解決策になるでしょう。 – Jay