私はUIViewをサブクラス化しようとしています。私はすでにいくつかの指定された初期化子を持っており、私は自分のカスタムビューをコードかNibファイルから初期化する可能性を持っています。 Appleは指定されたイニシャライザを使用するように指示しましたが、それ自体は行っていません。initWithCoder:
はinitWithFrame:
を呼び出しません。私の指定されたイニシャライザを両方の状況で呼び出させるにはどうすればよいですか?それをする方法はありませんか?initWithFrame:とinitWithCoderの両方をオーバーライドする方法:UIViewのサブクラスでは?
答えて
特殊な初期化を1つの方法でパックします。プライベート(.mで宣言されている)でもかまいません。 次に、両方の初期化子をオーバーライドし、それらの中からinitメソッドを呼び出します。
- (void)myInitialization
{
//do your stuff
}
- (id)initWithFrame:(CGRect)aRect
{
self = [super initWithFrame:aRect];
if (self)
{
[self myInitialization];
}
return self;
}
- (id)initWithCoder:(NSCoder*)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self myInitialization];
}
return self;
}
を参照してください - (instancetype)初期化子init' ..?念のため。私は客観的なCを初めて使っています。 – shashwat
'UIView'のサブクラスは_simple_' init'でほとんど初期化されません。同じ場合には、 'init'も含めることができます。つまり、ある種のビューが通常は固定フレームなどで初期化される場合です。 –
あなたが言ったように:
initWithFrame: - それは、あなたがこのメソッドを実装することをお勧めします。 は、このメソッドの代わりにカスタム初期化メソッドを実装することも、 を実装することもできます。
initWithCoder: Interface Builder nibファイルからビューをロードし、ビューにカスタム の初期化が必要な場合は、このメソッドを実装します。
私がやることは、両方とも呼び出す方法であり、あなたのUIView
に実装したい共通の動作があります。
- 1. UIViewのinitWithFrameをカスタマイズする
- 2. CGRectZeroでUIViewクラスまたはサブクラスでinitWithFrameを呼び出すとはどういう意味ですか?
- 3. UIViewサブクラスにuiprogressviewを描画する方法は?
- 4. サブクラスから内部クラスをオーバーライド/拡張する方法は?
- 5. ModelAdmin.save_model()とModelForm.save()の両方をオーバーライドする際の問題
- 6. MacとiOSの両方でCALayerサブクラスを作成する上でのヒント?
- 7. IXmlSerializableを実装するとき、ReadXmlまたはWriteXmlのどちらかをオーバーライドするだけで、両方をオーバーライドする方法はありませんか?
- 8. PHPサブクラスにプロパティ(継承とインスタンスの両方)を継承させる方法はありますか?
- 9. stretchableImageWithLeftCapWidth:topCapHeightは、UIImageViewサブクラスのinitWithCoder:で動作しません。
- 10. UIView内のUIViewにアクセスする方法
- 11. iOS:各イニシャライザはいつテーブルセルに使用されますか? init、initWithFrame、initWithCoder、initWithStyle
- 12. uiviewのページコントロールをスクロールする方法は?
- 13. HTMLとテキストの両方をクリップボードにコピーする方法は?
- 14. HTML4とHTML5の両方をサポートする方法は?
- 15. Dojo 1.7とDojo 1.6の両方を実行する方法は?
- 16. アクションバーとメニューボタンの両方を処理する方法は?
- 17. ORDER BY列とRAND()の両方を選択する方法は?
- 18. nibファイルで作成されたUIViewをサブクラス化してオーバーライドする
- 19. インスタンスメソッドとクラスメソッドの両方でメンバを使用する方法
- 20. JavaでIPv4とIPv6の両方をサポートする方法
- 21. PHPとXMPPの両方の方法
- 22. サブクラスでのinitのオーバーライド
- 23. 他のUIViewを含むUIViewサブクラス
- 24. Facebookのログイン - ローカルホストとプロダクションの両方で開発する方法?
- 25. ルビーの[]カッコをオーバーライドする方法は?
- 26. Javaのリストメソッドをオーバーライドする方法は?
- 27. メソッドレベルで `ValidateAntiforgerToken`をオーバーライドする方法は?
- 28. ListFragmentでLongPressをオーバーライドする方法は?
- 29. グローバルスタイルでContextMenuをオーバーライドする方法は?
- 30. UIViewの角を丸くする最善の方法と最速の方法は?
たちは '含める必要はありませんこちらをご覧ください取り、コードサンプルhttp://stackoverflow.com/a/17798646/381807 – nesimtunc