Sponsored Link
どうも、ヤマサキです。
今日はXcodeにて良くあるDelegateってやつを理解して初心者を脱出しよう!の回です。
わかってる人はこの記事全く役に立たないのでここで読むのをやめましょう。
そしてDelegateっていまいちイメージできない方はこれを読んで理解しましょう。
なぜ今更Delegateのお話かと言うと、今日もいつも通りコード書いて遊んでいました。
ふとDelegateを理解できなかった時の事を思い出し訳のわからない記事を読み漁っていた思い出が蘇ったので復習も兼ねて記事にしてみます。
まずDelegateを調べてみました。
「delegate」は日本語では「委譲」と訳されることが多い。 委譲という言葉が分かりにくいと思うなら、「代表者」と考えてもよい。 何かの処理を実行さ・・・・・・
凄いよねこれ。
Delegateってなんぞやって調べたいのに言葉の意味をさして使い方を理解しろってそもそもプログラムやったことない人向けではないよね。
色々な記事みて何回もコード書いてその都度delegateの使い所勉強してってやっていくとわかるんだけどもっと簡単に説明出来てる記事見つけてたら理解がはやかったと思うの。
わざわざBlogとかに初心者でもわかる!とか、バカでもわかる!とか書いてる説明の記事見るけど全然ダメ。
バカにしかわからない事があるってわかってないんだよ。あれ書いてる人たち。
そんな賢い人たちがバカな人に噛み砕いて説明してるつもりかもしんないけど、ダメなのよそれじゃ。
って事で前置きが長くなりましたが私が絶対にわかるように説明してみましょう。
まずデリゲートの意味なんて考えないでこれを見ましょう。
UIButtonは簡単に使える
UITextFieldは色々ごちゃごちゃしててうぜーわこれ
こう思った事はありませんか?
UIButtonはボタンの設置、ボタンが押されたらどういう風に動作するか?と決められたコードが存在しています。
UITextFieldはどうでしょう?
UITextFiledを設置し、文字を入力、あれ?キーボード出っぱなし。何これ壊れてんの?
これ、デリゲートがポイントになります。
上の二つの違いを見るとUIButtonに比べてUITextFieldの方は
・動作は決められているが、そのままでは使えないポンコツ
・決められた動作の先は自分で設定していけるポンコツ
この二つがデリゲートの全てです。
UIButtonは完全に動きが決まっていますよね?
ボタンを設置して、押されたら信号を出して次に繋げる
それに比べてUITextFieldは未完成の機能盛りだくさん。
私は思いました、「アップル手抜き過ぎだろこれ。」
本当は違うんです。
未完成なのはわざとでそもそもUITextFieldの機能を完全に決めることが出来ないのでデリゲート(委託,譲渡)と呼ばれる訳のわからない名前の物に頼るのです。
これ名前が悪いわ、まじで。誰だよデリゲートって名前付けたやつ。わざわざ難しくすんなよ
とまぁUITextFieldが未完成品だってのはわかったけどどこがどう未完成なのか?
では私が機能を決めてみましょう。
まずいつも通りUITextFieldを座標や長さを決めて設置します。
ここまではボタンと同じですね。
次にTextFieldって名前通り文字の入力なので機能を決め打ちしてしまうと、UITextFieldの入力欄をタップすると私が常日頃から世界に怒っている事柄を死ぬほど入力してキーボードを下げてしまう。
ここまでで完成品ですよね。
んで、
これ誰か使いますか?
これアップルが決めたって一緒です。
文字の入力欄をタップすると故スティーブ・ジョブズの名言集みたいな言葉が勝手にテキストに入ってキーボード勝手に下がるの嫌でしょ?
ってかそんなだったらいらないでしょ?
そこでデリゲートですよ。
Delegaet = self で未完成品を自分で設定するよって宣言して一つ一つ自分で決めていくのです。
イメージできましたかね?
イメージできたら簡単なんだけどね、これ
暇見て図とか作ってちゃんとやってみようかな。
あ、今日クリスマスイブですね
あと10分でクリスマスだわ
世間は恋人といちゃいちゃしてんでしょう
もちろん私は一人でキボード叩いてますよ^_^
みなさん幸せな時間が送れる様に祈っています!
Merry Christmas!
Sponsored Link
ツイート