質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Delegates

Delegatesとは、オブジェクト指向型プログラミングにおいて、あるオブジェクトの操作を一部の他のオブジェクトに代替させる手法のこと。オブジェクトは他のデリゲートに頼って関数を実行することができます。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

394閲覧

View Controller間の値の受け渡しをDelegateを使って行いたい

pyonpy

総合スコア10

Delegates

Delegatesとは、オブジェクト指向型プログラミングにおいて、あるオブジェクトの操作を一部の他のオブジェクトに代替させる手法のこと。オブジェクトは他のデリゲートに頼って関数を実行することができます。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/01/24 04:26

編集2019/01/25 07:43

前提・実現したいこと

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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/01/24 04:29

どこで止まるのでしょうか?
fuzzball

2019/01/24 04:30 編集

「View Controller間の値の受け渡しをDelegateを使って行いたい」のであれば、それに関係のないコードは一度削除(コメントアウト)してみてはどうでしょうか?(もしくは、delegateのテストを行うためだけのプロジェクトを作るか)
pyonpy

2019/01/24 06:08

return delegate.sayHello() で停止しています
fuzzball

2019/01/25 07:50

>>参考になるリンクだけでも ググればいくらでも出てきますよ。 とりあえず上から3つくらいは読んで下さい。
guest

回答1

0

SubViewControllerのdelegateをセットして下さい。

投稿2019/01/24 04:33

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問