ストーリーボードを介して構成されたものと一緒に使用するというカスタムUIView
クラスがあります。ビュー プロパティの大部分は、Interface Builder を介して構成されます。ただし、次のように、ボタンの背景として設定する前に、いくつかの画像をプログラムで調整する必要があります。MyView
UIViewController
-(void)setupVisuals {
UIImage *image = [[UIImage imageNamed:@"myButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
// _myButton is an IBOutlet property set through the storyboard:
[_myButton setBackgroundImage:image forState:UIControlStateNormal];
}
問題は、その時点であるため[self setupVisuals]
、初期化子*から呼び出すことができないことです。_myButton
nil
MyViewController
この行を に追加して問題を解決しましたviewDidLoad:
[(MyView*)self.view setupVisuals];
この呼び出しを行うと、すべてが正常に機能します。ただし、これは、比較的一般的な問題の解決策ではなく、回避策のように感じます。
オーバーライドするUIView
方法、またはメカニズムをMyView
利用せずに のビジュアルの初期化を完了する他のメカニズムはありviewDidLoad:
ますか?
※この場合、
initWithCoder:
ビューがストーリーボードから読み込まれるため、イニシャライザが必要です。イニシャライザが正しく呼び出されることを確認しましたが、ビジュアルはまだ準備ができていません。