私はDetailTableViewControllerという名前のtableviewcontrollerを持っており、DetailTableViewControllerという名前の次のtableviewcontrollerにデータを渡す必要があります。しかし、ユーザーがDetailTableViewControllerのセルをクリックすると、データを渡す必要があります。次に、「オプション値をアンラップしている間に予期せぬ結果が出ています」というエラーが表示されます。Swift 3で並べ替えてください。tableviewcontrollerからdetailviewcontrollerにデータを送信
答えて
まずあなたが最初のビューから送信する値を保持するためにあなたの詳細ビューコントローラで変数を作成しますコントローラ。最初のビューコントローラーでdidSelectRowAt
メソッド内の値を割り当ててから、プログラムでナビゲートします。この方法では、データを送信するためにprepare for segue
メソッドを実装する必要はありません。
didselectrowat
メソッドを実装するだけで済みます。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selected = firstArray[indexPath.row]
let detailvc = self.storyboard?.instantiateViewController(withIdentifier: "DetailTableViewController") as! DetailTableViewController
detailvc.type = selected
self.present(detailvc, animated: true, completion: nil)
}
初めてビデオチュートリアルを作成しました。 how to pass data from one table view controller to another。これがあなたに役立つことを願っています。
@Tamannahの動画はまだアップロードされています。中にお試しください....ありがとうございます。 –
先ほど紹介したコードを参考にして解決策を教えてください。すべてのセルを押しながら、医療用アレイからのデータのみを表示します。 @ Anuradh S – Tamannah
私はあなたのために作成した数分後にビデオチュートリアルを試みます(まだアップロードしています)。 View Controller間でデータを渡す方法と、条件でデータを表示する方法について説明します。それを試してみよう..... –
performSegueを呼び出すとvar valueToPassに値がないようです。次のコードでvalueToPassの値を代入するようにしてください:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
valueToPass = guides[indexPath.row]
performSegue(withIdentifier: "Cell", sender: self)
}
そして、あなたのセグエを作成し、あなたのViewControllerを形成し、多分あなたは、細胞からのセグエを作成します。
ごdidSelectRow
新しいindexPath
を設定している内部。それを削除すると、そのトリックを行う必要があります。すべての
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Don't reassign indexPath
// let indexPath = tableView.indexPathForSelectedRow!
let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell
valueToPass = currentCell.textLabel?.text
performSegue(withIdentifier: "Cell", sender: self)
}
まず、、このような場合にはビュー(セル)からデータを取得していないモデル(データソース配列)から、常にそれを得るん。すべての
第二には、
prepare(for segue
の署名は、あなたもvalueToPass
を削除することができ、むしろself
よりindexPathを渡すdidSelectRowAt
でスウィフト3.
のために間違っています。 prepareForSegue
で
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "Cell", sender: indexPath)
}
モデルからデータを取得し、詳細ビューコントローラに渡す:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Cell" {
let viewController = segue.destination as! GuidesDetailsTableViewController
let indexPath = sender as! IndexPath
viewController.passedValue = guides[indexPath.row]
}
}
- 1. Button from UITableViewController detailViewControllerにデータを送信します - swift
- 2. python-cgiからAJAXにデータを送信
- 3. アンドロイドからAmazon S3にデータを送信
- 4. nodejsからangularjsにデータを送信
- 5. unityからjava androidにデータを送信
- 6. XAMPP(MYSQL)からandroidにデータを送信
- 7. phpからアンドロイドにデータを送信
- 8. サーバーからGPSデバイスにデータを送信
- 9. サーバーからOSXアプリケーションにデータを送信
- 10. pythonからphpファイルにデータを送信
- 11. データをApple WatchからiPhoneに送信
- 12. データをdev C++からノートパッドに送信
- 13. アンドロイドアプリケーションからlocalserver sqlにデータを送信
- 14. ajaxからスプリングコントローラにデータを送信
- 15. PythonからJavascript(JSON)にデータを送信
- 16. アプリケーションからRealmオブジェクトサーバーにデータを送信
- 17. PHPからjavaアプリケーションにデータを送信
- 18. サーバ(java)からアンドロイドクライアントにデータを送信
- 19. WP7からPCにデータを送信
- 20. テーブルセルからデータベースにデータを送信
- 21. ツイスト - サーバーからクライアントにデータを送信
- 22. クライアントからサーバー側にデータを送信
- 23. DataGridViewからシリアルポートにデータを送信
- 24. アンドロイドからmysqlにデータ(ダブルタイプ)を送信
- 25. モデルからデリゲートにデータを送信
- 26. WPFからGoogleアナリティクスにデータを送信
- 27. Oracle Jetの送信イベントからデータを送信
- 28. コントローラからディレクティブへデータを送信
- 29. 送信SMSからデータを取得
- 30. レールからjsonデータを送信する
エラーラインの直前に渡された渡された変数を一度印刷してみてください。 –
そのnil @ Tushar Sharma – Tamannah