Tôi bắt đầu di chuyển nhiều cấu trúc phân cấp chế độ xem của mình sang IB.Tại sao tôi không tỉnh dậyFromNib?
Tôi có một tệp nib được gọi là "AlignmentViewController.xib" trong đó tôi thiết lập phân cấp chế độ xem của mình với AlignmentViewController là chủ sở hữu tệp. Điều này hoạt động tốt.
Một trong những phương pháp tôi vẫn còn mờ là awakeFromNib. Trong đoạn mã sau của AlignmentViewController tôi thêm phương thức bổ sung duy nhất awakeFromNib. Tuy nhiên, nó KHÔNG được gọi là:
- (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;
}
Ai đó có thể làm rõ cho tôi những gì tôi đã bỏ lỡ ở đây không?
Chúc mừng, Doug
UPDATE: Sau khi đọc một số các câu trả lời tôi nhận ra tôi cần để có được để dưới cùng của cái gì đó là khá cơ bản.
Nhìn vào khởi tạo:
- (id)initWithChromosomeName:(NSString *)chromosomeName
basepairStart:(NSUInteger)basepairStart
basepairEnd:(NSUInteger)basepairEnd {
self = [self initWithNibName:@"AlignmentViewController" bundle:nil];
Tôi nhận thấy tôi kêu gọi initWithNibName: ABC: Cái gián tiếp. Đây có phải là hành động xấu không? Tệp AlignmentViewController.xib định nghĩa cấu trúc phân cấp khung nhìn của tôi. Nhưng tôi không thực sự sử dụng initWithNibName: bundle: theo cách thông thường? Có cách nào tốt hơn để làm điều này?
FWIW, UIViewController cũng cung cấp 'viewDidLoad' đặc biệt cho bất kỳ chế biến bạn cần phải làm trong điều khiển của bạn, sau khi xem đã được tải (cho dù là bằng tay hoặc từ một nib). –
Có. Tôi sử dụng rộng rãi viewDidLoad. Tôi chỉ đang cố gắng chuyển nhiều cấu trúc UI sang IB và tôi cần phải xử lý awakeFromNib tại một số điểm. – dugla
Việc sử dụng IB không yêu cầu sử dụng 'awakeFromNib', cũng không mâu thuẫn với việc sử dụng' viewDidLoad'. –