私は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とinitWithCoderメソッドのオーバーライドのためのXcodeのNULL可能警告
- 2. UIViewのinitWithFrameをカスタマイズする
- 3. CAGradientLayerサブクラスのUIViewサブクラスのサブクラスバッキングレイヤーを作成する方法
- 4. IBDesignableサブクラスでUIImageViewのイメージプロパティをオーバーライドする方法は?
- 5. CGRectZeroでUIViewクラスまたはサブクラスでinitWithFrameを呼び出すとはどういう意味ですか?
- 6. Rubyのサブクラスからラムダ変数をオーバーライドする方法は?
- 7. UIViewサブクラスをUICollectionViewフッターとして使用する方法
- 8. 最近、両方のサブクラス&supreclass
- 9. UIViewサブクラスにuiprogressviewを描画する方法は?
- 10. サブクラスから内部クラスをオーバーライド/拡張する方法は?
- 11. メイクファイルの追加とオーバーライドの両方を許可する
- 12. ModelAdmin.save_model()とModelForm.save()の両方をオーバーライドする際の問題
- 13. iOS:各イニシャライザはいつテーブルセルに使用されますか? init、initWithFrame、initWithCoder、initWithStyle
- 14. stretchableImageWithLeftCapWidth:topCapHeightは、UIImageViewサブクラスのinitWithCoder:で動作しません。
- 15. MacとiOSの両方でCALayerサブクラスを作成する上でのヒント?
- 16. Swift 3を使用してUIViewでrequiresConstraintBasedLayoutをオーバーライドする方法は?
- 17. tableViewCellでtapとlongPressの両方を処理する方法は?
- 18. IXmlSerializableを実装するとき、ReadXmlまたはWriteXmlのどちらかをオーバーライドするだけで、両方をオーバーライドする方法はありませんか?
- 19. GstBinでhandle_messageをオーバーライドする方法は?サブクラスを作るしようとすると
- 20. UIView内のUIViewにアクセスする方法
- 21. PHPサブクラスにプロパティ(継承とインスタンスの両方)を継承させる方法はありますか?
- 22. nibファイルで作成されたUIViewをサブクラス化してオーバーライドする
- 23. UIView initWithCoderの読み込みが遅すぎる
- 24. サブクラスの@Autowiredプロパティをオーバーライドするには
- 25. 他のUIViewを含むUIViewサブクラス
- 26. カスタムビュー - UIViewのサブクラスが
- 27. initWithCoderとは何ですか?
- 28. uiviewのページコントロールをスクロールする方法は?
- 29. マッピングのキーと値の両方をマッピングする方法は?
- 30. サブクラスでのinitのオーバーライド
たちは '含める必要はありませんこちらをご覧ください取り、コードサンプルhttp://stackoverflow.com/a/17798646/381807 – nesimtunc