ストーリーボードを介して構成されたものと一緒に使用するというカスタムUIViewクラスがあります。ビュー プロパティの大部分は、Interface Builder を介して構成されます。ただし、次のように、ボタンの背景として設定する前に、いくつかの画像をプログラムで調整する必要があります。MyViewUIViewController
-(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]、初期化子*から呼び出すことができないことです。_myButtonnil
MyViewControllerこの行を に追加して問題を解決しましたviewDidLoad:
[(MyView*)self.view setupVisuals];
この呼び出しを行うと、すべてが正常に機能します。ただし、これは、比較的一般的な問題の解決策ではなく、回避策のように感じます。
オーバーライドするUIView方法、またはメカニズムをMyView利用せずに のビジュアルの初期化を完了する他のメカニズムはありviewDidLoad:ますか?
※この場合、
initWithCoder:ビューがストーリーボードから読み込まれるため、イニシャライザが必要です。イニシャライザが正しく呼び出されることを確認しましたが、ビジュアルはまだ準備ができていません。