2011-09-09 83 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