我開始將更多的視圖層次結構轉移到IB。爲什麼我的awakeFromNib不會啓動?
我有一個名爲「AlignmentViewController.xib」的筆尖文件,其中我使用AlignmentViewController作爲文件所有者設置了我的視圖層次結構。這工作正常。
我仍然模糊的方法之一是awakeFromNib。在下面的AlignmentViewController代碼片段中,我添加了一個額外的方法awakeFromNib。然而,它不會被稱爲:
- (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;
}
有人可以澄清我在這裏錯過了什麼?
乾杯, 道格
UPDATE: 讀一些我知道的答案後,我需要得到的東西的底部,這是非常基本的。
望着初始化:
- (id)initWithChromosomeName:(NSString *)chromosomeName
basepairStart:(NSUInteger)basepairStart
basepairEnd:(NSUInteger)basepairEnd {
self = [self initWithNibName:@"AlignmentViewController" bundle:nil];
我發現我打電話initWithNibName:包:間接。這是不好的做法嗎? AlignmentViewController.xib文件定義了我的視圖層次結構。但我沒有真正使用initWithNibName:bundle:通常的方式?有一個更好的方法嗎?
FWIW,UIViewController中還提供了'viewDidLoad'專門爲你需要在你的控制器做,視圖已經被加載(無論是手工還是從筆尖)之後的任何處理。 – 2009-10-19 14:14:04
是的。我廣泛使用viewDidLoad。我只是試圖將更多的UI構建移植到IB,並且我需要在某個時候處理awakeFromNib。 – dugla 2009-10-19 15:31:55
IB的使用沒有要求使用'awakeFromNib',也不違反對'viewDidLoad'的使用。 – 2009-10-19 16:15:47