他のさまざまなビューコントローラのビューに配置するカスタムビュー階層をXIBに作成しました。 SOからのヒントは、明示的にサブビューとして追加する必要があることを示しています。 XIBが読み込まれ、デバッガで表示されますが、正しいように見えますが、2つの問題があります。まず、カスタムXIBのトップレベルのUIViewしか定義されておらず、表示されません。私は意図的に別の色の背景を明示するようにしました。そのヘッダがあるとして、次のようにこのカスタムビューをロードしようとしている親「OtherViewController」のためのコード:iPhone SDKのカスタムビューがXIBから読み込まれていません。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
NSLog(@"%s", __FUNCTION__ );
if (self) {
// Custom initialization
appDelegate = (myProjectAppDelegate*) [[UIApplication sharedApplication] delegate];
NSObject *obj = [[NSBundle mainBundle] loadNibNamed:@"PageHeaderView" owner:self options:nil];
NSArray *array = nil;
if ([obj isKindOfClass:[NSArray class]]) {
array = (NSArray*) obj;
for (UIView *customView in array) {
NSLog(@"%@", customView);
if ((customView.tag == 3700) && ([customView isKindOfClass:[PageHeaderView class]])) {
[self setCustomPageHeaderView: (PageHeaderView*) customView];
[self.view addSubview: customPageHeaderView];
[self.view bringSubviewToFront: customView];
}
NSArray *array = [self.customPageHeaderView subviews];
for (NSObject *obj in array) {
NSLog(@"%s: \t%@", __FUNCTION__, obj);
}
}
} else {
NSLog(@"%s: object following loadNibNamed is [%@]", __FUNCTION__, [obj class]);
}
}
return self;
}
タグ= 3700は、デバッガ内の情報の明白なビットを持って再びでした。期待どおりにカスタムビューに表示されます。
BTW - サブビューの階層がデバッガに表示されています(ブラインドになっている必要があります。またはこのコードと質問を投稿した時点で間違って何かを修正しました)。彼らが子供か孤児であるかどうかはわかりません。 – mobibob
こんにちはすべて - 私はそれを仕事に持っています...私はサブビューになるために配列の他のビューのすべてのためのelse節を追加し、それは動作します。私は24時間質問に答えることができないので、他の誰かがヒーローになりたいなら、私は答えを授けます。 ....} else { [self.view addSubview:customView]; [self.view bringSubviewToFront:customView]; } – mobibob
もう一度間違っています - その階層を持つカスタムビューが1つしかなく、 "subviews"のループが私のVCのデリゲートのテキストフィールドビューのプロパティをフックアップするために使用されました。 – mobibob