此代码使我的应用程序崩溃,因为递归调用awakeFromNib
:
- (void)awakeFromNib
{
[super awakeFromNib];
...
[[self window] setFrameTopLeftPoint:NSMakePoint(frame.origin.x, frame.origin.y)];
}
setFrameTopLeftPoint是否再次调用awakeFromNib
?我认为当XIB文件加载NSWindow时,只调用一次awakeFromNib。
如何从awakeFromNib
更新窗口位置和大小?
感谢
答案 0 :(得分:0)
我不知道你为什么在awakeFromNib中获得无限递归。我创建了一个模仿代码的测试项目,而-awakeFromNib只被调用一次。我怀疑它与你初始化窗口控制器的方式有关。
也就是说,在-windowDidLoad中更新窗口位置可能会更好。从文档的“Subclassing NSWindowController”部分,它说:
windowDidLoad:覆盖窗口nib文件后执行的任务 加载。