3

私のアプリには、多くのボタン、テキストフィールド、マトリックスを備えたインターフェースが必要です。そして、彼らは時々変わる必要があります。現在、これを行うには、IBにすべての要素を既に配置し、必要に応じてそれらを非表示/表示/移動します。他の人は何をお勧めしますか?私はそれをすべきですか?NSTabViewを使用する必要がありますか?NSView?プログラムで要素を作成する必要がありますか?もしそうなら、変更せずに再び必要な要素がすでに作成されている場合はどうなりますか?それを解放して再作成するのは無駄です。

どんな助けでも大歓迎です。

4

2 に答える 2

2

私の意見では、ビューを頻繁にアニメーション化する必要がある場合は、プログラムでインターフェイスを作成する方が適切です。それらを非表示/非表示にするだけの問題であれば、IB はうまく機能しますが、再レイアウトが必要な場合や、未知の数のビューを動的に作成する場合は、すべてを nib ファイルで機能させることは価値がありません。

一般的なアドバイスとして:

  • 使用する要素の種類ごとに、 (UIViewまたはそのサブクラスの 1 つから) サブクラスを作成します。UIControlから合成ビューをつなぎ合わせたくUIViewControllerなるかもしれませんが、実際のクラスを作成する方がはるかに優れています。

  • 標準の Cocoa ビュー クラスを調べて、独自のコントロールとビューで同様の API を作成してみてください。

  • できるだけ多くのデータ (サブ要素の配置など) を plist に入れることで、コードを掘り下げる代わりに、一元化された場所から簡単に変更できます。

数ダースの短期間のビューを頻繁に作成する場合は、それらをプールに保持して再利用する価値があります。しかし、断続的にいくつかのラベルが追加および削除されるだけであれば、あまり心配する必要はありません。いつものように: 最適化を早めすぎないでください。

于 2010-02-23T16:31:59.143 に答える
1

あなたの現在のアプローチはうまく聞こえます。それらを表示/非表示にしているが、それ以外は変更されていない場合、XIB が既に必要なものの「フリーズドライ」コピーを保持しているのに、コードでそれらを作成するのに苦労する必要はありません。

それらを論理グループ内に保持している限り、グループのコンテナー (NSBox や NSView など) を移動/交換/表示/非表示にすることができます。セッションごとに常に表示されるとは限らない論理グループが多数ある場合は、それらを独自の XIB に分離し、必要なときにのみロードして、起動時間とメモリを節約できます。

NSViewController を使用すると、論理グループごとにきれいに分割できるため、さらに優れています。パネルをビューとしてロードすると、View Controller はアウトレット/アクションを保持し、xib と 1 対 1 の関係を持ちます。

于 2010-02-23T16:29:58.630 に答える