問題タブ [nib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - nib、コードで設定されたクラス間の通信?
初心者の質問:
nib で、ViewController クラスにリンクされた File's Owner があり、NSObject 派生クラスもある場合、コード内で ViewController クラスと NSObject クラスの間でどのように通信しますか?
たとえば、ScientificCalculatorView.xib が次のようになっているとします。
明らかに、Calculator を再利用可能にしたいので、NormalCalculatorViewController などで使用できます。そのため、UI と電卓コードは分離されています。電卓はペン先にある必要さえありますか?
初歩的な質問ですが、解りたいと思います。
iphone - loadNibNamedはどのように機能しますか?
ほとんどのサンプルでは、valueからの戻り値loadNibNamedは使用されていないため、owner引数を使用していると思います。しかし、それはどのように機能し、所有者オブジェクトに接続しますか?このような方法でペン先をロードするには、所有者クラスがどのような要件を満たす必要がありますか?
私が推測できる唯一の要件はそれです
- 所有者クラスには、nibファイル内のオブジェクトまたはその多くのオブジェクトにアウトレットが定義されている必要があります
- nibファイルの所有者はnibがロードされているクラスに設定する必要があります。その後、所有者パラメータを
loadNibNamedに設定できます。self - nibファイルでは、すべての接続を所有者クラスで定義されたアウトレットに設定する必要があります
私は自分の仮定に正しいですか、それとも使用中に考慮しなければならないことが他にありloadNibNamedますか?
xcode - ボタンを押した後のテーブルビューペン先のロード
次のコードを使用して、ナビゲーションバーにボタンを追加しました。このボタンを押すと、メソッドshowCountriesが呼び出されます。
これで機能し、ボタンが表示され、押されると、計画どおりにshowCountriesメソッドに移動します。
showcountriesメソッドが実行する必要があるのはエラー国のリストを含む新しいテーブルビューをロードすることです(現時点では配列になっています)。
これを行うために、私は次のコードを試しました:
すべて正常にコンパイルされているようですが、使用すると、コンソールに次のエラーが表示され、アプリがクラッシュします。
2010-06-21 18:09:02.076 Vat Pro [788:207] *-[UIViewController tableView:numberOfRowsInSection:]:認識されないセレクターがインスタンス0x12a920に送信されました2010-06-21 18:09:02.082 Vat Pro [788:207] *キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了しています、理由:'***-[UIViewController tableView:numberOfRowsInSection:]:認識されないセレクターがインスタンス0x12a920に送信されました' 2010-06-21 18:09:02.088 Vat Pro [788:207]
私は2日間頭をかいていたので、間違いを見つけられたら教えてください。
また、プレーンなnibファイルをロードしてみましたが、これは問題なく機能しました。
objective-c - applicationDidFinishLaunching の前に nib 内のオブジェクトが初期化されていることを確認する
私の問題を見てくれてありがとう。
アプリに 2 つのビュー コントローラーがあり、それぞれに独自の nib ファイルがあります。controller1 のインスタンスは MainWindow.xib に格納され、controller 2 のインスタンスは Controller1.xib に格納されます。
アプリデリゲートがapplicationDiDFinishLaunchingに送信される前にコントローラー2が初期化されていることを確認する方法はありますか?
実際のセットアップは、他の多くのビュー コントローラーでははるかに複雑なので、すべてを MainWindow.xib に入れたくありません。さらに、そうすると再利用性が低下します。
再度、感謝します!
cocoa - dylib の nib からのウィンドウ
私は Mac にはまったく慣れていませんが、Windows にはかなり慣れています。私が必要としているのは、ライブラリ (dylib) によって開閉される所有ウィンドウです。これは、MS Windows では非常に簡単に実行できますが、Cocoa では難しくないようです。
Apple の「CocoaInCarbon」の例のコードを C++ ラッパーで使用しました。しかし、NSApplicationLoad()続いて[NSBundle LoadNibNamed:@"MyWindow" owner:self]失敗します。これは、dylib がバンドルではないことが原因ですか。
dylib内でウィンドウを開いて制御する別の方法はありますか?
objective-c - UIViewController の viewDidUnload で IBOutlets を解放しますか?
UIViewControllerNib ベースの sで正確に何が起こるかについて、私は少し混乱しています。サブクラスを生成するとき、テンプレートのメソッドUIViewControllerには非常に具体的なコメントが含まれています。viewDidUnload
これはどのサブビューに適用されますか?
- 私が初期化したものは
viewDidLoad?(私はそう言うでしょう) - 私が初期化したものは
initWithNibName?(私はノーと言うでしょう) - Nib 内のオブジェクトを参照する IBOutlets?
次のようにView Controllerを使用する場合:
この場合、サブビューへの参照を保持するインスタンス変数が解放されるviewDidUnloadかdealloc、それともdeallocビュー コントローラーがスタックから取り出されるとすぐに呼び出されるかは問題ではないと思います。viewDidUnloadの代わりに変数をオンにしdeallocます。
しかし、MyViewController複数回プッシュされる可能性のあるインスタンス変数として使用したとします。
MyViewControllerで IBOutlet を解放するとどうなりますviewDidUnloadか? 次の新しい参照を期待できますviewDidLoadか?
言い換えれば、ビュー自体は の後にどうなりviewDidUnloadますか? コントローラーをもう一度押すと、Nib から解放されて再ロードされますか? または、ビューはメモリに残りますか? もしそうなら、コンセントは前にリセットされviewDidLoadますか?
ビューがメモリに残ってviewDidLoadいて、コントローラーが押されるたびにコンセントがリセットされるかリロードされる場合は、コンセントを解放するのが正しいと思いますviewDidUnload(最初のケースでは問題ありませんが)。しかし、それ以外の場合 (特にビューがメモリに残り、アウトレットが再設定されていない場合)、サブビューを解放するviewDidUnloadことは、私が提示したユースケースでは間違っています。正しいですか?
objective-c - Cocoa-フォーカスが失われると、ロードされたnibファイルが消えます
そのようにロードしたnibファイルがあり、[NSBundle loadNibNamed: @"myNibFile" owner: self ]正常にポップアップしますが、フォーカスを失うと、単に消えてしまいます。メインウィンドウの後ろで消えているかどうかを確認しましたが、消えていません。私のアプリはかなり大きいので、何が原因かわかりません。違いが生じる場合は、ガベージコレクションを有効にします。ロードされたnibファイルの問題や、調査する必要のあるフォーカスの喪失について誰かが知っていますか?必要に応じて、コードからいくつかのサンプルを投稿し始めることができます。
cocoa - コアデータを使用してnibをいくつかのnibファイルに分割します
現在、私は1つのmanagedContext、すべてがかなり相互に関連しているエンティティの多くのNSArrayController、およびそれぞれが1つまたは2つのNSArrayControllerを使用するいくつかのWindowsを持っています。ウィンドウはコアデータバインディングを使用し、すべてIBで行われるココアバインディングを介してセットアップされます
私は今1ペン先(xib)を持っており、そこにすべてが入っています。多くの場合、アプリケーションを使用するときは、これらのウィンドウの1つだけを開き、他のすべてをロードしたくありません。それで、Appleと常識によって推奨されているように、私は多くのペン先に侵入したいと思います(理想的には各ウィンドウに1つ)
個別のnibファイルをロードする方法については問題ありませんが、これをすべて分割して、相互にリンクしたままにするにはどうすればよいですか?新しいペン先を作成すると、それと別のペン先を接続できないようです。それは多くの理由で理にかなっていますが、それではどうすればこれを実行できますか?プログラムですべてのバインディングを実行するように切り替えるだけで、nibロード時にバインディングを設定しますか?たぶん、すべてのNSArrayControllerを中央のペン先に配置して一度にすべてロードし、その機能にアクセスしてその時点でバインディングを実行するときに、各ウィンドウのペン先をロードするのは理にかなっていますか?
iphone - ビューコントローラーを使用せずにnibファイルを使用してビューをロードする方法
私はこの目的に不慣れです-cボタンを押したときに作成したnibファイルを使用してビューをロードしたい.View Controllerを使用せずに..
iphone - IBOutlet をいつ使用するか
IBOutlet について少し混乱しています。ペン先で変数が変更されるときに IBOutlet を使用する必要がありますか?