カスタム メニュー画面を各 xib ファイルに配置する必要があるプロジェクトがあります。ビューを作成してサブビューとして追加することでこれを実行できることを理解しています。
そのビューを1つのファイルで作成し、必要な場所で呼び出したいのですが、これを実現する方法がわかりません。
助けてください...
カスタム メニュー画面を各 xib ファイルに配置する必要があるプロジェクトがあります。ビューを作成してサブビューとして追加することでこれを実行できることを理解しています。
そのビューを1つのファイルで作成し、必要な場所で呼び出したいのですが、これを実現する方法がわかりません。
助けてください...
これは、まさにこれを行っている私の例です。
カスタム テーブルビュー セルを作成するためにこれを行いましたが、これはどのタイプのクラスでも行うことができます。
重要なのは、Interface Builder で項目にカスタム クラスが設定されていることです。
======更新======
私が考えていなかったもう一つのことはです。特定のタイプのビューを作成し、そのビューを各 XIB ファイルに入れたいと思うかもしれません。
もしそうなら。次に、UIViewのサブクラスである新しいクラスを作成できます
次に、UIView を xib に (何も含めずに) 追加し、ID エクスプローラーで「カスタム クラス」の値を設定します。これは、この UIView が実際には「カスタム クラス」タイプであることを Objective C に伝えます。Alloc はカスタム クラスを初期化し、そこに配置します。このイベントでは、コードを使用してメニューやその他のものを構築でき、以前に挿入した空白の UIView が実際にあったクラスに配置されます。
私のよくあるケース
アウトレットに接続された「コンテナ」UIViewを使用し、上記にリンクされているnibLoaderメソッドを使用して、作成されたペン先からビューを引き出し、そのオブジェクトをコンテナのサブビューとして追加します
@interface HomeViewController ()
@property (nonatomic, strong) MyCustomView *customView;
@end
@implementation HomeViewController
@synthesize customViewContainer = _customViewContainer; // IBOutlet from header
@synthesize customView = _customView;
- (MyCustomView*) customView{
if (_customView == nil){ // Lazy Load
// Load From Nib Loader linked to above
}
return _customView;
}
- (void) viewDidAppearAnimated:(BOOL) animated {
this.customView.frame = this.customViewContainer.bounds;
[this.customViewContainer addSubView:this.customView];
}
@end