下林明正のブログ

個人的かつ雑多なブログです。

Custom Classに指定したUIViewのinitWithFrameが呼び出されない件でハマった

諸事情によりiOS開発をまた勉強するかーと思って電卓レベルの凄く簡単なアプリを作ろうとXcodeとの格闘をはじめた。

Storyboardを使ってUI部品を配置して、殆ど同じUI部品を配置するつもりだったのでなんとか共通化できないかと考えたところ、そういえばCustom Classというものがあった。

愚直にUIViewを継承した新規クラスを作成して「ここで初期化してよ!」みたいなコメントが書いてある箇所にとりあえずNSLogを仕込んでみて、配置したUIViewのCustom Classに新規クラスを指定してみたものも、NSLogが実行されなかった。

うーんなんなんだろう、そもそもCustom Classが上手く紐付けられていないのかな…と思って検索してみるも、いまいち解決しなかった。

そうこうしている内に、UIViewControllerとUIView、MVCという考え方 | トリコロールな猫ほんとは背景色を変えたかったんだけど、initWithFrame()内でもdrawRect()内でもself.backgroundを設定してみましたが変わりませんでした。なんで?という記述を見つけて嫌な予感がしたのでinitWithFrame drawRectで検索してみたところiphoneアプリ開発、drawRect、initWithFrame - 考え事帳のような記事を見つけて、そもそもinitWithFrameは呼び出されていなくてinitWithCoderというメソッドが呼び出されているのだということを知った…。

直感に反する……いや、まさかあのAppleが非直感的なプロダクトをリリースするわけがないのだから、人間の思い込みは恐ろしいというお話でした。

全然進まなかったけど、もう今日は消耗したのでここまでにしよう…。 去年くらいにも少しだけiOS開発を勉強したことがあったのだけど、この手の勉強をするのに手っ取り早い方法が見当たらないのが辛い。

絶対に挫折しない iPhoneアプリ開発「超」入門【iOS6対応版】

絶対に挫折しない iPhoneアプリ開発「超」入門【iOS6対応版】

追記