我开始将更多的视图层次结构构建转移到IB中。
我有一个名为"AlignmentViewController.xib"的nib文件,在其中使用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;
}
有人能为我澄清一下我错过了什么吗?
谢谢, 道格
更新: 阅读了一些答案后,我意识到我需要弄清楚一些非常基本的东西。
看看初始化:
- (id)initWithChromosomeName:(NSString *)chromosomeName
basepairStart:(NSUInteger)basepairStart
basepairEnd:(NSUInteger)basepairEnd {
self = [self initWithNibName:@"AlignmentViewController" bundle:nil];
我注意到我间接地调用了initWithNibName:bundle:。这是否是不良做法?AlignmentViewController.xib文件定义了我的视图层次结构。但我并没有以典型的方式使用initWithNibName:bundle:? 有更好的方法吗?
viewDidLoad
方法,专门用于在视图加载后(无论是手动加载还是从nib文件加载)执行控制器中的任何处理。 - Sixten OttoawakeFromNib
,也不与使用viewDidLoad
相矛盾。 - Sixten Otto