J'ai créé une hiérarchie de vue personnalisée dans un XIB que je veux placer sur la vue de divers autres contrôleurs de vues. Les indications de SO indiquent que je dois ajouter explicitement en tant que sous-vue. Le XIB charge et l'affiche dans le débogueur, il semble correct, cependant, il y a deux problèmes. Tout d'abord, il ne définit que l'UIView de niveau supérieur de mon XIB personnalisé et cela ne s'affiche pas. J'ai volontairement mis un fond de couleur différente pour le rendre évident. Le code pour le parent « OtherViewController » qui tente de charger ce point de vue personnalisé comme son en-tête est la suivante:L'affichage personnalisé de l'iPhone SDK chargé depuis XIB ne s'affiche pas?
- (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;
}
Le TAG = 3700 était à nouveau d'avoir un peu évident de l'information dans le débogueur. Il apparaît dans la vue personnalisée comme prévu.
BTW - la hiérarchie des sous-vues apparaît dans le débogueur (j'ai dû être aveugle ou j'ai corrigé accidentellement quelque chose au moment où j'ai posté ce code et cette question). Je ne peux pas déterminer si ce sont des enfants ou des orphelins. – mobibob
Salut à tous - Je l'ai eu tellement de travail ... J'ai ajouté une clause else pour toutes les autres vues dans le tableau pour être sous-vues et cela fonctionne. Je ne peux pas répondre à la question pendant 24 heures, alors si quelqu'un d'autre veut être le héros, j'attribuerai la réponse. ....} else { [self.view addSubview: customView]; [self.view bringSubviewToFront: customView]; } – mobibob
incorrect à nouveau - il n'y avait qu'une seule vue personnalisée avec sa hiérarchie et la boucle sur "sous-vues" ont ensuite été utilisés pour raccorder les propriétés de vue de champ de texte de délégué de mon VC. – mobibob