IT企業で働く若者たちの成長期

初心者エンジニアとその友人が自身のアウトプットの場としてどうでもいいこと(時にはためになる?)ことをつらつら書きます。

【swift初心者が語る】DataSourceとDelegateとは?

こんにちは。青木です。 1月からエンジニアとして働き始めて早2ヶ月が経ちました(本当に早い・・・)

さて、今私は仕事としてswiftでiphoneアプリを開発しています。本当に右も左もわからず苦戦中です・・・・ そこで今回は私が勉強しているswiftのDataSourceDelegateについてお話しできればと思います。

DataSourceとDelegateとは

DataSource とは一言で言うと「テーブルに表示する内容を提供するもの」です。 対して、Delegateは「テーブルの表示や操作を処理するためのもの」です。 DataSourceとDelegateを扱うには、UITableViewDataSourceUITableViewDelegateというプロトコルを追加しなければなりません。 このプロトコルを追加することで、テーブル操作やイベント処理、セクションやセルの値を設定するための様々なメソッドを使用できるようになります

【注意点】 DataSourceとDelegateを使用する際に気をつけなければいけないのは必ず使用しなければいけないメソッドがあることです。

下の画像はDataSourceプロトコルの使用可能なメソッド一覧を表したものです。黄色で囲まれたメソッドがありますね。こちらは必ず使用しなければいけないメソッドです。 対して赤く囲まれた「optional」で始めるメソッドがありますね。こちらは必ず使用しなくてもいいメソッドです。 このようにDataSource/Delegataプロトコルを使用する際には、必ず実装しなければいけないメソッドがあることに注意してください。

f:id:sayulemon46:20170305190723p:plain

ちなみに使用必須のメソッドを指定しないと以下の画像のようなエラーが出ます。

f:id:sayulemon46:20170305191323p:plain

ちなみにこんな感じに書くと。。。 f:id:sayulemon46:20170305193018p:plain

こんな感じで表示されます。 f:id:sayulemon46:20170305193146p:plain

※詰まるポイント

なぜかcollection Viewがうまく配置されない!!!一個しか出ない!!なんて時があります。 そんな時はcollectionviewがDataSource/Delegate接続されているか見てみましょう。

手順① 下記画像の赤く囲われている部分をcontrolキーを押しながら接続先へドラッグ

f:id:sayulemon46:20170306171539p:plain

手順② 下記画像のようにDataSource/Delegateに接続されているかどうか確認。

f:id:sayulemon46:20170306171703p:plain

まとめ

簡単に殴り書きでしたが、ざっくり書いてみました。 DataSource とは一言で言うと「テーブルに表示する内容を提供するもの」 Delegateは「テーブルの表示や操作を処理するためのもの」です。

今後これらを使用して実装してみる様子を詳しくアップできたらなーと思います。