Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 971 - UITextFieldを考える

いままで勉強のためにチュートリアルに取り組んでいましたが、いくらチュートリアルをこなしても実践的な能力は身につきませんね。

オリジナルプロジェクトを立ち上げてプログラミングをはじめると、チュートリアルで学んだiOSフレームワークの知識だけでは太刀打ちできず初っぱなから行き詰まってます(T_T)

UITextFieldクラス利用も色々と知らなければならないことがあります。

UITextFieldはUILabelと異なりユーザーからの入力を受け付けて反応することができ、そういう流れからUITextFieldにはデリゲーション・メソッドが用意されています。

プログラミング初心者は「デリゲーション・メソッド」と言われてもちんぷんかんぷんだと思います。今まで基本概念を学んできた私は違和感なく理解できるんですが、それはコツコツとチュートリアルを勉強してきたからです。

デリゲーションは日本語で言えば「委譲」です。委譲はOOP(オブジェクト指向プログラミング)の中核概念の1つです。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

上記の本によれば、OOPの3大特徴が「クラス」「ポリモーフィズム」そして「継承」です。特にポリモーフィズム(多様性)がiOSフレームワークでふんだんに利用されているんです。

クラス継承を超えたつながりを作るための概念がポリモーフィズムで、Swift言語では「プロトコール&デリゲーション」と「エクステンション」が用意されています。特にプロトコール&デリゲーションは基本中の基本にあたります。
yataiblue.hatenablog.com
デリゲーション・メソッドを利用するためにUITextFieldとViewControllerの繋がりを用意する必要があります。

この準備の仕方にも基本的にストーリーボードの利用とコーディングによる方法があるので混乱しないように注意が必要です。

教科書を読んでチュートリアルをこなせばここまでの基本的な流れは理解できます。しかし、これだけで実践的なコーディングができないんです。

TextFieldからPopoverへのセグエ、入力した値をTextFieldに戻すためにデリゲーションが大活躍します。ここらの詳しい解説をしていませんがグーグルで調べてなんとか自分で解決しました。

そして悩んでいたのが、複数のTextFieldからどうやって1つだけ用意されているデリゲーションメソッドを利用すればいいのか分からなくなっていました。

やっぱりグーグルって素晴らしいですね。調べていると解決できました!

f:id:yataiblue:20170509181417j:plain

誕生日フィールドをタップするとDatePickerが表示されたPopoverが出現します。IDフィールドをタップするとNumberパッドのPopoverが表示されるようになりました。

分かっています。Popoverのレイアウトがむちゃくちゃです。まだStack Viewの絡んだレイアウト調整がちゃんと理解できてないんです。こういう実践的なコーディングの勉強がまだ不十分なんです。

まだまだですね(^_^;)