2011-09-09 50 views
2

我是很新的MAC编程。刚刚开始3天前。
我做的,我有在主窗口中的一个按钮
我使用这个代码打开了一个新的wndowcontrollerNSWindowController显示新窗口

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

    [tvc showWindow:self]; 

这工作正常,但是当我按下按钮,它再次打开同一窗口中的示例应用程序所以每次点击后我都会在屏幕上显示+1窗口。
我想要的是,如果我的新窗口已经在我的屏幕按钮,然后不能添加同一窗口。提前:)

+0

为什么'ThirdViewController'而不是'ThirdWindowController'?它是一个窗口控制器,不是视图控制器! :) – 2011-09-09 14:02:49

+0

我忘了windowController ..到现在的IOS工作,所以视图控制器上的脑海里:对 – iUser

回答

2

感谢如果只要点击该按钮,然后你有效地创建一个新的窗口控制器,从笔尖文件加载它的窗口,并显示该窗口多次被执行的代码当按钮被点击时。

的标准方法,以防止这种情况的发生是具有一个实例变量是最初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]; 
+0

其工作..感谢.. !! :) – iUser