
Cocoaでメインのウィンドウと環境設定のウィンドウを作りたいのですが、
二つの方法を探し当てました。
1.環境設定の為のクラスを用意し、コントローラーがないnibファイルを
initのNSBundleのloadNibNamed:で読み込みウィンドウを作成する。
2.コントローラーがあるnibファイルをメインのウィンドウから
loadNibNamed:で読み込み、ウィンドウを作成する。
1の方法だとコントローラーがないため、テーブルビュー等が
使えません。(私の力不足?)
2の方法の場合、環境設定のウィンドウからメインのウィンドウの
変数にアクセスできない(?)為、不便です。
何か良い方法は無いでしょうか??
どなたかご教示、よろしくお願い致します。m(_ _)m
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>あるnibファイルのウィンドウと別のnibファイルの
>コントローラーとを結びつける事はできるのでしょうか?
コントローラでウィンドウを制御?
ウィンドウにコントローラ?
どっちもnibなら それをinitするクラスが居る筈だよね?
そいつが値をやりとりすればいいだけなんじゃ?
必要ならウィンドウやコントローラを継承したクラスを作成して好きな変数を増やしてしまえば良いんだし。
ううん、話が難しくなってきましたね。
一つのクラスで、複数のウィンドウの管理をする方法、解りました。
ちなみにどういう場合にウィンドウをnibファイルで分けるんでしょうか?
メモリの消費量を抑える時でしょうか?
No.3
- 回答日時:
> 開かないようにする方法を教えて頂けませんでしょうか?
いいえ、教えません。なぜなら推奨できない方法だからです。
がんばって、どこに出しても笑われないような、りっぱなプログラムを書こうと思いませんか?私は、進歩、成長しようという意欲のある方の力添えになるのは、こちらも気持ちがいいですが、やっつけ仕事でごまかそうというのに力を貸すのは、気持ちがいいものではありません。
という事は、やはり、基本的にWindow一つに対して、nibファイルは一つという事なんですね。Appleの英文の資料を熟読する根性がなくて、よくわかっていません。
ちなみに仕事のプログラムでないので、やっつけ仕事で作るつもりはないですよ。
No.2
- 回答日時:
> あるnibファイルのウィンドウと別のnibファイルのコントローラーとを結びつける事はできるのでしょうか?
「結びつける」がどういう意味なのかによりますが、Nibファイルどうしは、互いに独立しているということはいえます。それはオブジェクトは互いに独立しているということに由来します。
Objective-Cに限らず、プログラミングでいちばん気をつけなければいけないのは、あるオブジェクトから、ほかのオブジェクトを参照しようとするとき、そのオブジェクトはバッファされているのか、いないのか、あるいはバッファされていたが、開放されているのかということです。バッファされていないオブジェクト、変数を参照すると、そのとたんにエラーが起き、プログラムが停止します。
Nibファイルで生成するインスタンスは、すべてバッファされていることが前提になるので、そういう心配がいらず、Interface Builderを使った構成は、プログラマの負担を大きく減らしてくれます。反面、なんでもかんでもひとつのNibファイルにインスタンスを詰め込むと、むだにメモリを消費することになり、けっして感心できることではありません。環境設定ウインドウも、「MainMenu.xib」の中に作ってしまえば、いくらでもほかのウインドウのOutletと連結できるので、すごくプログラムが楽になりますが、開く頻度がひじょうに低い環境設定ウインドウを、常時バッファさせておくことは、いいこととはいえません。
あるNibファイルが、ほかのNibファイルのOutletを参照できるようにするということは、両方ともつねにバッファされている状態でなければならないので、おなじくメモリの無駄づかいということになります。
ご丁寧なご回答どうもありがとうございます。
MainMenu.xibの中に環境設定ウィンドウを作れば・・・という事ですが、実は最初はそれがやりたかったのですが、MainMenu.xibの中にウィンドウを複数作ると、起動時に全部のウィンドウが開いてしまいます。
開かないようにする方法を教えて頂けませんでしょうか?
初歩的な質問かもしれませんが、本を見てもインターネットで調べても(日本語のサイトですが)見つける事ができませんでした。
どうぞ、よろしくお願い致します。
No.1
- 回答日時:
1
コントローラそのものをメインウィンドウ側で変数として持てばいいんじゃない?
2
delegateを実装するか環境設定側をインスタンス化したときにself(メインウィンドウ)を(環境ウィンドウへ)渡す
ご回答頂きどうもありがとうございます。
その後調べた結果、
1.ウィンドウだけでコントローラーの無いnibファイルを作成する。
2.環境設定の為のクラスを作成する。
3.nibファイルのFile's ownerのカスタムクラスに環境設定のクラスを登録する。
4.環境設定のクラスのinitメソッドでloadNibNamed:によりnibファイルを読み込むようにしておく。
5.メインのクラスで環境設定のクラスのインスタンスを生成する。
という方法で、メインのクラスから環境設定のウィンドウを生成する事が出来ました。
ところで、回答頂いた1についてですが、あるnibファイルのウィンドウと別のnibファイルのコントローラーとを結びつける事はできるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- その他(パソコン・周辺機器) デバイスのペアリングのウィンドウサイズがおかしい 1 2023/01/18 18:48
- Word(ワード) Microsoft Word2023で、修正箇所を表示させたい 1 2023/02/09 10:07
- その他(OS) MacのFinder操作について 2 2022/07/13 07:29
- UNIX・Linux ubuntu ウィンドウのバー ダブルクリック 巻き取る 1 2022/04/28 19:28
- Windows 10 (続き)2つのウィンドウ選択時の表示について 6 2023/08/13 15:05
- Windows 10 2つのウィンドウ選択時の表示について 10 2023/07/25 08:48
- Chrome(クローム) (win10)ショートカットの開き方について 1 2023/02/19 18:55
- Windows 10 拡大鏡の音声読み上げ機能が機能しません 2 2023/02/23 22:34
- その他(OS) エクスプローラのアクティブウィンドウのタイトルバーに色がつかない 3 2023/07/18 18:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
ラジオボタンの初期指定
-
VBA .Value=.Value ?
-
ゲームでは結局どっちが良いの?
-
Vba LongPtrについて教えてくだ...
-
指定したインアクティブウィン...
-
他のアプリケーションの終了処理
-
Excelの上下を固定したい
-
[VBA] UserForm を Excel の W...
-
Alt+P,Alt+NをPostmessageで送...
-
エクセルで1行目から3行目が消...
-
一つ前のウィンドウをTopMost=T...
-
【VB2008】 マウス操作の一時的...
-
SendMessage関数がうまく動作し...
-
VBで外部プログラムを位置のみ...
-
UWSCで特定のChromeのタブをア...
-
検索の画面がでなくなってしま...
-
ウィンドウにキー送信で ENTER ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
Vba LongPtrについて教えてくだ...
-
検索の画面がでなくなってしま...
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
[VBA] UserForm を Excel の W...
-
VBA .Value=.Value ?
-
作成したウインドウのサイズを...
-
Console.WriteLine で表示されない
-
エクセルで1行目から3行目が消...
-
「&HFFFF」「&H1A」とは?
-
【VB2008】 マウス操作の一時的...
-
UWSCで特定のChromeのタブをア...
-
他のアプリケーションの終了処理
-
MFCでハンドルを取得するには
-
VBAで単一ブック複数窓を閉じる...
-
EnumChildWindowsの使い方(VBA)
おすすめ情報