0

ビューを表示せずにモーダルにロードする方法はありますか? モーダル ビュー コントローラーのメソッドにアクセスして、UI コンポーネントのプロパティを XIB に設定する必要があります。これらのプロパティを設定したいのですが、すぐにビューを表示したくありません。ユーザーが電話を回転させたときにそれを明らかにしたい。

アプリが読み込まれるとすぐにモーダル ビューを表示するソリューションを除いて、すべてが機能しています。

ありがとう、ハウィー

4

2 に答える 2

1

ビュー コントローラーでは、別のコントローラーのアウトレットを作成できます。あなたがする必要があるのは、インターフェイスビルダーの同じnibファイルで次のようなものです:

MainController         UIViewController
->UIview               UIView

ModalController        UIViewController
->ModalControllerView  UIView

MainController.h で、View Controller のアウトレットを作成します。

@property(nonatomic, retain) IBOutlet ModalController *ModalController

(もちろん、ivar が必要で、インクルードも必要です)

Interface Builder で、ModalController mainController を ModalController ビューに接続します。オプションのドラッグまたは任意の方法を使用します。

nib が読み込まれると、modalController がインスタンス化された ModalController に設定され、MainController のメソッドが modalController にアクセスして、必要なことを実行できるようになります。次に、 presentModalView を使用して表示するだけです。

ただし、これを行うより一般的な方法は次のとおりだと思います。

- (IBAction)showInfo {    

    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

(これは、Xcode の Utility Application プロジェクト テンプレートから直接取得したものです。)

つまり、モーダル コントローラを作成し、独自の nib ファイルを表示してから、必要に応じて手動で nib ファイルをロードします。これは、実際に必要になるまでオブジェクトをインスタンス化しないため、メモリ効率が高くなります。

あなたができない理由もありません:

    modalController = [[ModalViewController alloc] initWithNibName:@"ModalView" bundle:nil];

MainController の viewDidLoad または initWithCoder メソッドなどで、必要に応じて構成に進みます。

于 2010-01-08T22:38:13.103 に答える
0

別のビューがある場合は、このビューを既存のビューの下に挿入できますか?

(void)insertSubview:(UIView *)view atIndex:(NSInteger)index

次に、デバイスが回転すると、ビューが切り替わりますか?

于 2010-01-08T20:09:27.660 に答える