iphone - 为什么我的 awakeFromNib 不会触发?

标签 iphone interface-builder nib xib

我开始将更多的 View 层次结构迁移到 IB。

我有一个名为“AlignmentViewController.xib”的 nib 文件,在其中我使用 AlignmentViewController 作为文件所有者设置了 View 层次结构。这工作得很好。

我仍然模糊的方法之一是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 文件定义了我的 View 层次结构。但我并没有真正以典型的方式使用 initWithNibName:bundle: ?有更好的方法吗?

最佳答案

-awakeFromNib 在所有 nib 对象实例化后发送到从 nib 实例化的所有对象。所有者不是这些对象之一。它在反序列化 nib 之前就存在,并在加载后连接到 nib,因此不会发送 -awakeFromNib (当然,除非它由其他某个 nib 本身实例化)。

这里的一个线索是,-initFromChromosomePair:basepairStart:basepairEnd:-awakeFromNib 不可能同时被调用。 nib 加载程序始终调用 -initWithCoder:-initWithFrame:-init (发送的规则位于 Nib Object Life Cycle ) 。事实上,您有一些其他指定的初始化程序强烈表明您正在代码中的某个位置手动创建该对象,这意味着该对象没有“从 nib 中唤醒”。

关于iphone - 为什么我的 awakeFromNib 不会触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1588813/

相关文章:

iphone - 在横向模式下隐藏标签栏

iphone - 默认应用程序图标形状在我的图标后面可见

ios - Storyboard UICollectionViewCell 出现,然后变为空白

ios - NIB 中的导航项始终为零

iphone - 本地通知警报时间

javascript - js select() 文本确实可以在 iPhone 上运行

ios - 如何将图像 UIButton 缩放到插图?

objective-c - UITextField -- 为 leftView 添加 UIView - 无法获得焦点

cocoa - 是否可以以编程方式隐藏停靠栏图标

macos - 从 "NIBArchive".nib 文件中提取可翻译字符串