English 中文(简体)
如何只打开一个窗口“优惠”?
原标题:How open only one window "Preferences"?

My app have Preferences window. I open it using this code

- (IBAction)openPreferences:(id)sender {

    NSWindowController *windowController = [[NSWindowController alloc] initWithWindowNibName:@"Preferences"];
    [windowController window];
}

如果新闻command,将再次打开新的优惠窗口......

如何只打开一个窗口? 感谢!

最佳回答

窗口 主计长,一个实例变数,可以改变你的公开选择

- (IBAction)openPreferences:(id)sender
{
    if( windowController == nil )
        windowController = [[NSWindowController alloc] initWithWindowNibName:@"Preferences"];
    [windowController showWindow:sender];
}
问题回答

So this is how I solved it... I have a class "MyPreferencesWindowController" which has a method called getInstance. This method is what is called when you want to get the preferences window. This solution takes advantage of singleton technology.

/**
Method in my MyPreferencesWindowController.m file
with a corresponding method in the .h file.
*/
+(id) getInstance {

    static PreferencesWindowController *instance = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

现在,在文件类别中,当你想展示优惠窗口时,我们做以下工作:

-(IBAction) showPreferences:(id)sender {
    if (preferencesWc  == nil)
        preferencesWc = [MyPreferencesWindowController getInstance];

    [ preferencesWc showWindow:self ];
}

This will ensure the preferences window is only created once. And then each call to getInstance will return the same instance of the window.





相关问题
2 mysql instances in MAC

i recently switched to mac. first and foremost i installed xampp. then for django-python-mysql connectivity, i "somehow" ended up installing a seperate MySQL. now the seperate mysql installation is ...

Iterating over string/strlen with umlauted characters

This is a follow-up to my previous question . I succeeded in implementing the algorithm for checking umlauted characters. The next problem comes from iterating over all characters in a string. I do ...

Controlling OSX windows

I m trying to control windows of a foreign OSX applications from my application. I d like to 1. move the windows on the screen 2. resize the windows on the screen 3. change the currently active window ...

Switching J2SE versions on Mac OS (SnowLeopard)

My current JDK on Mac OS (10.6) is set to 1.6 and I d like to switch to 1.5. A listing of /System/Library/Frameworks/JavaVM.framework/Versions/ shows: lrwxr-xr-x 1 root wheel 10 Nov 3 18:34 ...

Scrolling inside Vim in Mac s Terminal

I ve been googling around trying to figure out if it s possible to use my mouse wheel to scroll while inside Vim in Mac s Terminal, with no luck. It seems as if only X11 or iTerm support this. Before ...

export to MP3 from quicktime API

A question for Apple,QT programmers. Would like to know if it s possible to export a Movie object to MP3 using the QuickTime API. Preferably the ConvertMovieToFile function. I ve looked at ...

热门标签