0

コントローラーが関連付けられたメインビューが1つあります。かなり複雑なツールバーがいくつかあり、ユーザーの操作に応じて切り替えたり切り替えたりする必要があります。

物事を単純にするために、あらゆる種類の絡み合った依存関係や本当に深いデリゲートチェーンではなく、メインのViewControllerでツールバーを管理します。

とにかく、1つのxibに複数のビューを設定して、それらを適切に初期化するにはどうすればよいですか?カスタムビューの1つを画面の中央に表示したい場合、どうすればよいですか?

または、ビューを複数のxibに分割する場合、IBOutlets / IBActionsの同じコントローラーオブジェクトを参照させるにはどうすればよいですか?

4

3 に答える 3

2

実はとてもシンプルです。XIBファイルに新しいルートレベルのビューを作成しIBOutlet、メインのViewControllerでこのビューのを作成するだけです。

XIBから直接ビューをロードし、同じView Controllerを共有する限り、それはもう少しずさんです。基本的に、XIBファイル内のアイテムをループして、探している要素を見つける必要があります。

于 2009-12-15T19:35:12.417 に答える
2

とにかく、1つのxibに複数のビューを設定して、それらを適切に初期化するにはどうすればよいですか?カスタムビューの1つを画面の中央に表示したい場合、どうすればよいですか?

UIViewxibには必要な数のを含めることができます。通常、1つを「プライマリ」ビュー(ファイル所有者のビュープロパティ(つまり、ビューコントローラ)に接続されているビュー)にし、残りは同じレベルのxibに配置できます。ビューコントローラの他のプロパティにそれらを接続することもできます。

これらのビューをメインビューのサブビューとして作成できます。(いくつか、それは多くの見解です)。FooView2つのビューがあるとしましょうBarView。あなたFooViewはスタートアップに立ち会いたい。BarViewつまり、IBに非表示に設定しただけです。次に、ViewControllerは次のようになります。

@interface MyViewController : UIViewController
{
    FooView* fooView;
    BarView* barView;
    ...
}
...
@property (nonatomic, retain) IBOutlet FooView* fooView;
@property (nonatomic, retain) IBOutlet BarView* barView;
...

次に、コード内でビューを変更する場合は、setHidden:メソッドを使用して一方を非表示にし、もう一方を表示します。

または、ビューを複数のxibに分割する場合、IBOutlets / IBActionsの同じコントローラーオブジェクトを参照させるにはどうすればよいですか?

同じViewControllerを共有する他のxibを持つことができます。私はそれを自分でたくさんやりました。ファイル所有者を適切なクラスに設定するだけです。

于 2009-12-15T19:45:10.303 に答える
0

このアプローチで注意すべきことの1つは、いずれかのビューが必要になったときにすべてのビューが初期化されることです。

ビューが単純な場合は問題にならないかもしれませんが、ビューが複雑な場合は、アプリケーションの読み込みが遅くなる可能性があります。

.xibビューがやや複雑な場合は、それらを異なるファイルに分割する必要があります。この場合、親はIBOutlets toではなくUIViewController、他のサブクラスへのIBOutletsを持ちます。ビューコントローラは、それぞれのビューの遅延読み込みを自動的に処理します。UIViewControllerUIViews

于 2009-12-15T19:43:12.510 に答える