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

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

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

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

Q&A

解決済

1回答

652閲覧

delegate、datasourceの通知先について質問です。

tatuya51

総合スコア23

Swift

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

0グッド

0クリップ

投稿2020/04/21 20:15

qiitaで見つけたTodoアプリを作成している際に疑問に感じたのですが、delegate、datasourceを使用する際は
基本的に通知先を設定しなければならないものだと考えておりました。(○○○.○○○ = selfのように)

しかし、このアプリでは通知先を設定していない(?)にも関わらず、エラーも発生することなく正常に動きます。
これはどういうことなのでしょうか?

ご回答よろしくお願いします。

参考
https://qiita.com/pe-ta/items/8f474358d1dd789557f3

ViewController

swift

1// ViewController.swift 2import UIKit 3 4//classの継承を追加 5class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 6 7 //UITableView、numberOfRowsInSectionの追加(表示するcell数を決める) 8 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 9 //戻り値の設定(表示するcell数) 10 return TodoKobetsunonakami.count 11 } 12 13 //UITableView、cellForRowAtの追加(表示するcellの中身を決める) 14 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 15 //変数を作る 16 let TodoCell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TodoCell", for: indexPath) 17 //変数の中身を作る 18 TodoCell.textLabel!.text = TodoKobetsunonakami[indexPath.row] 19 //戻り値の設定(表示する中身) 20 return TodoCell 21 } 22 23 24 //最初からあるコード 25 override func viewDidLoad() { 26 super.viewDidLoad() 27 //追加画面で入力した内容を取得する 28 if UserDefaults.standard.object(forKey: "TodoList") != nil { 29 TodoKobetsunonakami = UserDefaults.standard.object(forKey: "TodoList") as! [String] 30 } 31 } 32 33 //最初からあるコード 34 override func didReceiveMemoryWarning() { 35 super.didReceiveMemoryWarning() 36 } 37}

AddController

swift

1// AddController.swift 2import UIKit 3 4//変数の設置 5var TodoKobetsunonakami = [String]() 6 7class AddController: UIViewController { 8 9 //テキストフィールドの設定 10 @IBOutlet weak var TodoTextField: UITextField! 11 12 //追加ボタンの設定 13 @IBAction func TodoAddButten(_ sender: Any) { 14 //変数に入力内容を入れる 15 TodoKobetsunonakami.append(TodoTextField.text!) 16 //追加ボタンを押したらフィールドを空にする 17 TodoTextField.text = "" 18 //変数の中身をUDに追加 19 UserDefaults.standard.set( TodoKobetsunonakami, forKey: "TodoList" ) 20 } 21 22 //最初からあるコード 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 } 26 27 //最初からあるコード 28 override func didReceiveMemoryWarning() { 29 super.didReceiveMemoryWarning() 30 } 31}

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

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

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

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

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

guest

回答1

0

ベストアンサー

テーブルビューにViewControllerを紐付け のところで、コードではなく Storyboard 上で dataSource と delegate を設定しています。

投稿2020/04/21 20:42

hoshi-takanori

総合スコア7901

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

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

tatuya51

2020/04/22 20:02

ご回答ありがとうございます。 理解することができました。 ちなみにこの場合においてコードではなくStoryboard上で紐付けするというのは慣例的なものなのでしょうか? また、そうでない場合はどこに紐付けするコードを記述すればいいのか教えて頂きたいです。
hoshi-takanori

2020/04/22 20:29

コードか Storyboard のどちらかで紐付けすればいいのですが、Storyboard を使うのであれば Storyboard でできる事は Storyboard でやるのが自然だと思います。コードでやる場合は viewDidLoad が一般的です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問