私はMacRubyとCocoaを備えた完全なn00bなので、答えるときはそのことを覚えておいてください。多くの詳細と説明が必要です。:)
2つのウィンドウを含む単純なプロジェクトをセットアップしました。どちらもInterfaceBuilderで構築されています。最初のウィンドウは、テーブルビューを使用したアカウントの単純なリストです。表の下に「+」ボタンがあります。+ボタンをクリックすると、「新しいアカウントの追加」ウィンドウが表示されます。
また、これらのウィンドウのデリゲートとして設定されAccountsController < NSWindowController
たクラスと、適切なボタンクリックメソッドが配線されたクラス、および必要なウィンドウを参照するためのアウトレットがあります。AddNewAccountController < NSWindowController
[アカウント]ウィンドウの[+]ボタンをクリックすると、次のコードが実行されます。
@add_account.center
@add_account.display
@add_account.makeKeyAndOrderFront(nil)
@add_account.orderFrontRegardless
これは、最初に[+]ボタンをクリックしたときにうまく機能します。すべてが表示され、データを入力してモデルにバインドすることができます。ただし、新しいアカウントの追加フォームを閉じると、状況が悪化し始めます。
[新しいアカウントの追加]ウィンドウを閉じるときに解放するように設定した場合、2回目に[+]ボタンをクリックすると、ウィンドウはポップアップ表示されますが、フリーズします。ボタンをクリックしたり、データを入力したり、フォームを閉じたりすることはできません。これは、フォームのコードがリリースされたためだと思います。そのため、フォームを処理するメッセージループはありません...しかし、これについては完全にはわかりません。
[新しいアカウントの追加]ウィンドウを閉じたときに解放しないように設定した場合、2回目に[+]ボタンをクリックすると、ウィンドウは正常に表示されて使用できますが、以前に入力したすべてのデータが残っています...以前のAccountクラスインスタンスにまだバインドされています。
私は何が間違っているのですか?[アカウント]フォームの[+]ボタンをクリックしたときに、[新しいアカウントの追加]フォームの新しいインスタンスを作成し、新しいアカウントモデルを作成し、そのモデルをフォームにバインドしてフォームを表示する正しい方法は何ですか?
...これはすべてOSX10.6.6、64ビット、XCode3.2.4で実行されています