Facebook Twitter Google Maps RSS
Home 未分類 Delegate知らなくて大変な思いを・・・
formats

Delegate知らなくて大変な思いを・・・

Published on 2014年4月25日, by in 未分類.

 

こんにちわ!

今日はiphoneやipadアプリを作る時に必要な
プログラミング(?)知識についてお話しします。

私はここ1年くらいの間にObjective-Cの言語を
勉強しはじめたのですが、
その中でも、使用頻度は高いのにあまり理解していなくて苦労した!
とゆう「Delegate」についてお話ししたいと思います。

 

Delegate(デリゲート)とは? 


日本語の意味としては「委譲」とゆう意味を持ちます。
簡単に言うと「これやっといてね!」と人に頼む感じでしょうか。
例えば何かを入力するテキストフィールドがあり
キーボードで入力後「Return」キーを押した場合に
「Return押した後の処理お願い!」と別の処理担当にお願いするなどなど。

 

Delegateの実装方法 


では上記例の通り、あるテキストに文字入力後
「Return」キーを押した場合の処理を実装してみたいと思います。

①まずはインターフェースビルダーにて入力対象のテキストフィールドと
「Return」キー押下後に入力したテキストを表示するラベルを配置します。
(後の処理の為にOutletも接続)

 

②ヘッダファイルにテキストフィールドのデリゲートを定義

 

③そしてテキストフィールドを入力したら誰に処理を渡すか?
を設定するのですが、設定方法が2通りあります。

 

■一つ目はインターフェースビルダーで設定する方法

テキストフィールドを右クリック(ドラッグ)し、左側のViewController(黄色いやつ)
まで引っ張ってドロップすると以下のようなウィンドウが表示されるので
リストから「delegate」を選択します。

 

■二つ目はソースコードで設定する方法
実装ファイルのviewDidLoadで以下を記入。

「self.inputText.delegate = self;」

 

上記どちらのやり方でも誰に処理を渡すのかを設定可能なのですが、
インターフェースビルダーで設定した場合はソースコード上で
見えないので、Connections Inspecterで確認する必要があります。

 

どちらで実装しても良いかとは思いますが、
複数人のプロジェクトなどにおいては、どちらか統一した方が分かりやすいですね!

 

④Delegateを受ける人(ViewController)を設定した後は
Returnキーを押した時のイベントを作成します。

先ほどヘッダファイルに記載したDelegate定義の中を除いてみましょう。
どんな処理が出来るのか確認できます。(Commandキー押しながらUITextFieldDelegateをクリック)

 

今回はReturnキーを押した場合の処理を実装したいので、
「textFieldShouldReturn」をコピーしてきます。

そして実装ファイルにペーストして処理を実装!

 

⑤これを実際にシュミレータで動かしてみますと・・・

↓「Return」キー押下!

テキスト入力後、Returnキー押下でラベルに入力した
テキストの内容がラベルに表示されました。
分かってしまえば簡単な話なのですが、
今まであまりDelegateとゆうものを理解していなかったので
色々と苦労しました・・・(^^;

しかしアプリを作るにおいては、ほぼ必須と言っていいほど
重要な話なので理解しておいて損はないかと!!

 

おまけ


余談ですが、ViewControllerに配置したオブジェクトのOutletやActionは
ヘッダファイルではなく、実装ファイル(.m)に書くのが推奨されてるようで、
XCODE5以降はstoryboardのViewController選択時に、
Assistant editorに実装ファイルが表示されるようになりました。(Automatic設定時)
他のViewからは参照されないだろうからスコープを狭くしろよ!
ってことなんでしょうか。

 

アプリ開発実績はこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*