NSWindowController показывает новое окно - PullRequest
2 голосов
/ 09 сентября 2011

Я очень новичок в программировании на Mac.Только началось до 3 дней.
Я делаю пример приложения, в котором у меня есть одна кнопка в главном окне
Я использую этот код, чтобы открыть новый wndowcontroller

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

     [tvc showWindow:self];

Это работает нормально, нокогда я снова нажимаю кнопку, оно снова открывает то же самое окно, поэтому после каждого щелчка у меня появляется окно +1 на экране.
То, что я хочу, это если мое новое окно уже на моем экране, то кнопка не может добавить то же окно.

Заранее спасибо:)

1 Ответ

3 голосов
/ 09 сентября 2011

Если этот код выполняется при каждом нажатии кнопки, то вы фактически создаете новый оконный контроллер, загружаете его окно из файла пера и отображаете это окно столько раз, сколько нажата кнопка.

Стандартный подход для предотвращения этого состоит в том, чтобы изначально иметь переменную экземпляра nil и назначить ей контроллер окна только один раз. Впоследствии переменная экземпляра больше не является nil, и вы можете проверить это, чтобы избежать создания другого контроллера и повторной загрузки файла пера.

Вы можете, например, объявить следующую переменную экземпляра в вашем делегате приложения или любой другой контроллер, который должен отвечать за третий контроллер окна:

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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...