Zaczynam przenosić większą część mojej konstrukcji hierarchii widoków do IB.Dlaczego nie budzi się mój przebudzony FromNib?
Mam plik końcówki o nazwie "AlignmentViewController.xib", w którym ustawiłem hierarchię widoku z AlignmentViewController jako właścicielem plików. To działa dobrze.
Jedną z metod, na których pozostaję niewyraźny, jest awakeFromNib. W poniższym fragmencie kodu narzędzia AlignmentViewController dodaję jedną dodatkową metodę awakeFromNib. Jednak to nie dostaje nazywa:
- (void)awakeFromNib {
NSLog(@"AlignmentViewController - awakeFromNib");
[super awakeFromNib];
}
- (id)initWithChromosomeName:(NSString *)chromosomeName
basepairStart:(NSUInteger)basepairStart
basepairEnd:(NSUInteger)basepairEnd {
self = [self initWithNibName:@"AlignmentViewController" bundle:nil];
if (nil != self) {
self.title = @"Alignment";
self.chromosomeName = chromosomeName;
self.basepairStart = basepairStart;
self.basepairEnd = basepairEnd;
self.wantsFullScreenLayout = YES;
}
return self;
}
Czy ktoś może wyjaśnić mi, co mam tutaj brakowało?
Cheers, Doug
UPDATE: Po przeczytaniu niektórych z odpowiedzi Zdaję sobie sprawę, muszę dostać się do dolnej części czegoś, co jest dość podstawowe.
Patrząc na inicjalizacji:
- (id)initWithChromosomeName:(NSString *)chromosomeName
basepairStart:(NSUInteger)basepairStart
basepairEnd:(NSUInteger)basepairEnd {
self = [self initWithNibName:@"AlignmentViewController" bundle:nil];
zauważam Wołam initWithNibName: bundle: pośrednio. Czy to zła praktyka? Plik AlignmentViewController.xib definiuje moją hierarchię widoku. Ale tak naprawdę nie używam initWithNibName: bundle: w typowy sposób? Czy jest lepszy sposób to zrobić?
FWIW, UIViewController dostarcza również 'viewDidLoad' specjalnie dla jakiegokolwiek przetwarzania trzeba zrobić w kontrolerze, po pogląd został załadowany (zarówno ręcznie lub ze stalówką). –
Tak. Korzystam w szerokim zakresie z viewDidLoad. Po prostu próbuję przenieść większą konstrukcję interfejsu do IB i muszę w pewnym momencie zająć się awakeFromNib. – dugla
Używanie IB nie wymaga używania 'awakeFromNib', ani nie jest sprzeczne z użyciem' viewDidLoad'. –