swift4でTableViewCellの画面遷移を行いたい
Xcodeを用いてアプリケーション開発を行なっています。現在、Buttonにsegueを実装して画面遷移を行なった場合は画面遷移後のlabelに文字列は送れて表示ができているのですが、TableViewのタッチイベントにsegueを実装して画面遷移を行うとうまく表示されません。
該当のソースコード
ViewContriller
1import UIKit 2 3class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{ 4 var selectedText:String = "" 5 6 let TODO = ["aaaa", "bbbb", "cccc"] 7 8 9 10 @IBAction func nextButton(_ sender: Any) { 11 selectedText="test1" 12 self.performSegue(withIdentifier: "nextButton", sender: nil) 13 } 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 } 17 18 19 override func didReceiveMemoryWarning() { 20 super.didReceiveMemoryWarning() 21 } 22 23 24 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 25 return TODO.count 26 } 27 28 29 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 30 31 let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 32 33 cell.textLabel!.text = TODO[indexPath.row] 34 return cell 35 } 36 37 func tableView(_ table: UITableView,didSelectRowAt indexPath: IndexPath) { 38 selectedText=TODO[indexPath.row] 39 self.performSegue(withIdentifier: "next", sender: nil) 40 } 41 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 42 if (segue.identifier == "next") { 43 let nextVC = segue.destination as! secondViewController 44 nextVC.text = selectedText 45 } 46 if (segue.identifier == "nextButton") { 47 let nextVC = segue.destination as! secondViewController 48 nextVC.text = selectedText 49 } 50 } 51 52} 53
secondViewController
1import UIKit 2 3class secondViewController: UIViewController { 4 var text = "" 5 @IBOutlet weak var label: UILabel! 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 print(text) 9 label.text = text 10 } 11 12 13} 14
エラーログ
printで出力した文字列は、buttonをタップした場合はtest1と二度表示されるのですが、TableViewをタップした場合では一度目の出力が空文字となってしまい、うまく渡せません。二度目の出力はTODO配列の中身をうまく出力してくれます。また、button,TableView共にタップした際以下のようなエラーログが出力されています。
Warning: Attempt to present <test.secondViewController: 0x7fa10d617f00> on <test.ViewController: 0x7fa10d703ac0> whose view is not in the window hierarchy!
解決したい点
うまくTableViewにおける値渡しを行いたい
なぜsecondViewControllerのViewDidLoad()は二度呼び出されるのか
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/21 03:17