前提・実現したいこと
View Controller間の値の受け渡しをDelegateを使って行いたい
ここに質問の内容を詳しく書いてください。
リストのセルをクリックするとその内容が別画面で表示されるようにしたいです。
初心者なので、なるべく詳しく教えていただけるとありがたいです
(追記)Delegateでviewcontroller間の受け渡しをしたい場合の書式が全くわかりません...
参考になるリンクだけでも送っていただけると幸いです。
発生している問題・エラーメッセージ
実行はされるのですが、途中で止まって以下のメッセージが出ます
Swift
1 2エラーメッセージ 3Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value 4 5////////////////////////TodoListViewController.swift 6import UIKit 7 8//プロトコル 9protocol Mochi{ 10 func sayHello() -> String 11} 12 13 14class TodoListViewController: UITableViewController,Mochi { 15 func sayHello() -> String { 16 return "Hello, Piyopiyo" 17 } 18 19 20 // アイテムの型 21 class Item { 22 var title : String 23 init(title: String) { 24 self.title = title 25 } 26 } 27 28 // この配列に作ったアイテムを追加していく 29 var itemArray: [Item] = [] 30 //UI table viewコントローラーのviewdidload? 31 override func viewDidLoad() { 32 super.viewDidLoad() 33 34 // あらかじめ3つアイテムを作っておく 35 let item1: Item = Item(title: "宿題をする") 36 let item2: Item = Item(title: "牛乳を買う") 37 let item3: Item = Item(title: "手紙を書く") 38 39 // 配列に追加 40 itemArray.append(item1) 41 itemArray.append(item2) 42 itemArray.append(item3) 43 44 } 45 46 // MARK - セルの数を指定 47 //関数を使う時に_ラベル必要なし 48 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 49 //行数 50 return itemArray.count 51 } 52 53 // MARK - セルのカスタマイズ 54 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 55 56 let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoItemCell", for: indexPath) 57 let item = itemArray[indexPath.row] 58 cell.textLabel?.text = item.title 59 60 return cell 61 62 } 63 64 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 65 66 performSegue(withIdentifier: "toSubViewController",sender: nil) 67 68 } 69 70 71} 72 73 74 75////////////////////////SubViewController.swift 76import Foundation 77import UIKit 78 79 80class SubViewController: UIViewController,UITextFieldDelegate{ 81 @IBOutlet weak var TestLabel: UILabel! 82 83 var delegate: Mochi! 84 func say() -> String { 85 return delegate.sayHello() 86 } 87 88 override func viewDidLoad() { 89 super.viewDidLoad() 90 TestLabel.text = say() 91 } 92 93 94 95 override func didReceiveMemoryWarning() { 96 super.didReceiveMemoryWarning() 97 } 98}