如何从`awakeFromNib`更新窗口位置和大小?

时间:2012-06-07 12:55:52

标签: objective-c cocoa

此代码使我的应用程序崩溃,因为递归调用awakeFromNib

- (void)awakeFromNib
{
    [super awakeFromNib];
        ...
        [[self window] setFrameTopLeftPoint:NSMakePoint(frame.origin.x, frame.origin.y)];
}

setFrameTopLeftPoint是否再次调用awakeFromNib?我认为当XIB文件加载NSWindow时,只调用一次awakeFromNib。

如何从awakeFromNib更新窗口位置和大小?

感谢

1 个答案:

答案 0 :(得分:0)

我不知道你为什么在awakeFromNib中获得无限递归。我创建了一个模仿代码的测试项目,而-awakeFromNib只被调用一次。我怀疑它与你初始化窗口控制器的方式有关。

也就是说,在-windowDidLoad中更新窗口位置可能会更好。从文档的“Subclassing NSWindowController”部分,它说:

  

windowDidLoad:覆盖窗口nib文件后执行的任务   加载。