如何在框架内等待窗口关闭?

时间:2014-03-04 08:47:01

标签: objective-c macos frameworks nswindowcontroller

我必须在一个框架中创建一个函数,该框架打开一个窗口,上面有一个无线电组和一个按钮。当我单击按钮时,该功能应该打印出选择了哪个无线电。我正在使用带有xib文件的NSWindowController来显示Form。

问题是,代码在显示窗口后继续运行。 所以我在我的窗口中尝试了一个带有属性的while循环,当我单击按钮时会设置该属性。 但它不起作用,因为我认为窗口在同一个线程中运行。

    MyWindowController windowController = [[MyWindowController alloc initWithWindowNibName:@"MyWindow"];
    [windowController showWindow:self];
    while([windowController buttonClicked] == 0);
    NSLog("Radio %@ is selected!", [windowController selectedRadio]);

您是否知道如何等待窗口关闭而不是读出数据? 我希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

您可以将自己添加为窗口的委托,并收听windowWillClose通知。这样,当窗户关闭时,您会收到通知。

请注意,您没有“等待”窗口关闭,在没有阻止runloop的情况下无法工作,但是您只是闲置直到调用委托方法。另请注意,窗口控制器应自动成为窗口的委托,因此也可用于此。