XCode 4.3.3 を使用した単純な「シングル ビュー」テスト プロジェクトでは、次のようになります。
UIView をサブクラス化し、ストーリーボードのプロパティ インスペクターで、viewController の既定のビューとして使用するクラスとして指定しました。
カスタム UIView クラスで
TestUIView
、「drawSwitch」というプロパティを定義します。カスタム クラスのヘッダーを viewController クラスにインポートします。
プロジェクトをコンパイルしようとすると、次のコード行でコンパイラがサブクラスを認識せず、次のエラーが発生することに驚きました: Property 'drawSwitch' not found on object of type 'UIView' . カスタム クラスTestUIView
が viewControllerview
アウトレットのクラスとして示されているため、これは奇妙に思えます (下の画像を参照)。
[self.view setDrawSwitch:2];
それでも、キャストすると、コードはコンパイルされ、正常に実行されます。
[(TestUIView*) self.view setDrawSwitch:2];
viewController のプロパティを表示すると、カスタム クラスがビュー プロパティの Outlet として示されます。
そのため、ここのストーリーボードで何が起こっているのか混乱しています。
ストーリーボード/XCode を使用すると、コンパイラが満足できないことを実行できますか? GUI の抜け道ですか?
カスタム ビュー用に IBOutlet を作成できることはわかっていますが (以下では「testView」)、
view
アウトレットが既に定義されている場合に追加のアウトレットを作成するのは冗長に思えます。
ここで何か不足していますか?(「それが機能する方法」を超えて、実際にそうである可能性があります)。