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

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

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

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

Q&A

解決済

2回答

1124閲覧

自作のDelegate、ProtocolとUITableViewDelegateなどのDelegate、Protocolで理解がごちゃごちゃになった

oeiqgfodgfhps

総合スコア35

Swift

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

0グッド

0クリップ

投稿2020/06/04 17:54

SwiftでDelegateとProtocolの復習をしています。
現在Udemyで学んでいるのですが、そこではDelegateやProtocolは他のクラスの処理を簡単に呼び出せるものと教わりました。その理解で自分は、UITableViewDelegateなどのdelegateメソッド(didSelectRowAtやcellForRowAt)をUITableViewDelegateクラスから借りてきて使うためにProtocolが必要だという認識でいました。
しかし、自分でググってみて深く調べてみると(参照したページです→こちら
どうやらDelegateとProtocolには委任元と委任先という概念があり、委任元でProtocolをインスタンス化し、そのProtocolのメソッドであるDelegateメソッドを委任元で実行する。実際の処理はProtocolを批准した別のクラスで決めるというような理解をしました。つまりメリットとして、あるクラス(Aクラス)では実装したくないような処理を他のクラス(Bクラス)に任せることができ、かつそのタイミングはAクラスが決めることができるという感じで理解をしました。(他にも変数の受け渡しなどのメリットがあることも理解しました)

上記の理解(主に太字)自作で作ったDelegate、ProtocolをUITablevieViewDelegateの機能をViewControllerを使う際に当てはめてみると,ViewControllerがBクラスになると思いました。しかしAクラスに当てはまるのがどこになるかがわかりません。

素人質問で恐縮ですが、ご回答お願いいたします

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

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

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

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

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

guest

回答2

0

tableViewだと半分見えないからね。自分で全体を実装されれば理解しやすいと思います。

セルをタップしたら遷移する処理

投稿2020/06/05 03:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

しかしAクラスに当てはまるのがどこになるかがわかりません。

上記の例でいえばUITableViewというクラスになります。

UITableViewはテーブルビューを管理するクラスですが、インスタンス化された時点では表示するセルの具体的な内容や選択された時の処理は把握していません。

従って、tableView(_:cellForRowAt:)を移譲先で定義することで、セルとして使うインスタンスを動的に決めたり、tableView(_:didSelectRowAt:)を移譲先で定義することで、を使ってセルが選択された時の処理を動的に決めるという流れになります。

あるクラス(Aクラス)では実装したくないような処理を他のクラス(Bクラス)に任せることができ、かつそのタイミングはAクラスが決めることができる

Aクラスでは実装したくない、というよりも「具体的に実装できない」という表現の方が近いかもしれません。

投稿2020/06/04 20:51

TsukubaDepot

総合スコア5086

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

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

oeiqgfodgfhps

2020/06/05 04:23

ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問