2015-04-01 2 views
1

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

У меня есть вид с кнопка внутри которой вызывает следующий код:

let window = NSWindow() 
window.center() 
window.title = "test" 
window.makeKeyAndOrderFront(self) 

При нажатии кнопки открывается окно только на мгновение и исчезает через несколько миллисекунд позже.

Может ли кто-нибудь помочь мне с этим? Кажется, у меня есть довольно серьезные недоразумения о представлениях в какао ;-)

Благодарности Тома

+0

В моей кнопки действия. И, конечно, это неправильно. Большое спасибо за ваш быстрый ответ! – codaholic

ответ

4

Проблема заключается в том, что вы создаете и «хранение» в NSWindow в функции действия кнопки. Это означает, что как только действие этой кнопки будет выполнено, NSWindow пойдет из контекста и будет освобожден и, таким образом, исчезнет.

Вот как работает управление памятью в Swift: как только никто владеет объектом больше, он будет выпущен.

Что вам нужно сделать, это поместить ваше окно в переменную экземпляра. Как, например:

class YourViewController: NSViewController { 
    private var window: NSWindow! 

    @IBAction func buttonAction(sender: UIButton) { 
     window = NSWindow() 
     window.center() 
     window.title = "test" 
     window.makeKeyAndOrderFront(self)  
    } 
} 

Намек о makeKeyAndOrderFront(nil) нет никакой разницы. Передача либо nil, либо self в порядке. Но последнее, как вы сделали это оригинально, имеет больше смысла.

Смежные вопросы