Я полный ноль с MacRuby и Cocoa, так что имейте это в виду при ответе - мне нужно много деталей и объяснений. :)
Я создал простой проект, в котором есть 2 окна, оба из которых созданы с помощью Interface Builder. Первое окно представляет собой простой список учетных записей в виде таблицы. Под таблицей есть кнопка «+». Когда я нажимаю кнопку +, я хочу показать окно «Добавить новую учетную запись».
У меня также есть классы AccountsController < NSWindowController
и AddNewAccountController < NSWindowController
, настроенные как делегаты для этих окон, с подключенными соответствующими методами нажатия кнопок и выходами для ссылки на необходимые окна.
Когда я нажимаю кнопку «+» в окне «Учетные записи», у меня срабатывает этот код:
@add_account.center
@add_account.display
@add_account.makeKeyAndOrderFront(nil)
@add_account.orderFrontRegardless
это отлично работает, когда я впервые нажимаю кнопку +. Все отображается, я могу ввести свои данные и привязать их к моей модели. однако, когда я закрываю форму добавления новой учетной записи, дела начинают идти плохо.
если я настрою окно добавления новой учетной записи на выпуск при закрытии, то во второй раз, когда я нажму кнопку +, окно все равно появится, но оно заморожено. Я не могу нажимать кнопки, вводить какие-либо данные или даже закрывать форму. я предполагаю, что это связано с тем, что код формы был выпущен, поэтому нет цикла обработки сообщений, обрабатывающего форму... но я не совсем уверен в этом.
если я настроил окно добавления новой учетной записи так, чтобы оно не выпускалось при закрытии, то во второй раз, когда я нажимаю кнопку +, окно отображается нормально, и его можно использовать, но в нем все еще есть все данные, которые я ранее ввел ... это все еще привязан к моему предыдущему экземпляру класса Account.
Что я делаю неправильно? как правильно создать новый экземпляр формы «Добавить новую учетную запись», создать новую модель учетной записи, привязать эту модель к форме и показать форму, когда я нажимаю кнопку «+» в форме «Учетные записи»?
... все это делается на OSX 10.6.6, 64bit, с XCode 3.2.4