2

我对mac编程很陌生。3天前才开始。
我正在制作一个示例应用程序,其中我在主窗口中有一个按钮
我正在使用此代码打开一个新的 wndowcontroller

ThirdViewController *tvc = [[ThirdViewController alloc] initWithWindowNibName:@"SecondViewController"];

     [tvc showWindow:self];

这工作正常,但是当我再次按下按钮时,它会再次打开相同的窗口,所以每次点击后我都会在屏幕上显示 +1 窗口。
我想要的是如果我的新窗口已经在我的屏幕上,那么按钮不能添加相同的窗口。

提前致谢:)

4

1 回答 1

3

如果在单击按钮时正在执行该代码,那么您实际上是在创建一个新的窗口控制器,从 nib 文件加载其窗口,并在单击按钮时多次显示该窗口。

防止这种情况发生的标准方法是拥有一个初始的实例变量,nil并且只为其分配一次窗口控制器。随后,实例变量nil不再存在,您可以对其进行测试以避免创建另一个控制器并再次加载 nib 文件。

例如,您可以在应用程序委托或应负责第三个窗口控制器的任何控制器中声明以下实例变量:

ThirdViewController *tvc;

并且,当单击按钮时:

if (nil == tvc) {
    // If tvc is nil then it's the first time this code is being executed
    tvc = [[ThirdViewController alloc] initWithWindowNibName:@"SecondViewController"];
}

[tvc showWindow:self];
于 2011-09-09T14:02:32.320 回答