0

iOS 5で、を使用して別のView Controllerを表示しようとするとpresentModalViewController、モーダルビューが現在のビューの背後に表示されます。

presentModalViewControlleriOS 4で正常に動作し、iOS 5で非推奨になっていることを知っているpresentViewControllerので、運が悪かったので使用してみました。

この問題に遭遇するのはこれが初めてですが、この奇妙な動作につながる可能性のあるアイデアはありますか?

4

3 に答える 3

0

問題は、適切なモーダルプレゼンテーションスタイルを設定していないことだと思います。 http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIModalPresentationStyle

このサンプルは、既存のViewControllerの上にフルスクリーンモーダルをトリガーする必要があります。

 [self setModalPresentationStyle:UIModalPresentationFullScreen];
 ViewController2 *vc = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
 [self presentViewController:vc animated:YES completion:NULL];
于 2012-06-27T16:44:30.083 に答える
0

ボタンを使用してViewControllerを表示しているかどうかはわかりませんが、使用している場合は機能するはずです。以下のような新しい関数をViewControllerに作成します。これにより、ビューとビュー内のナビゲーションコントローラーがインスタンス化されるため、後で閉じることができます。

- (void)buttonPressed {
    UIViewController *yourViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *navigationController = [[UINavigationController] alloc] initWithRootViewController:yourViewController];
    [self presentModalViewController:navigationController animated:YES];
   }

そして、viewDidLoadには、次のようなものがあります(ボタンから表示する場合)。以下のコードはUIBarButtonItem用ですが、他のボタンも同様に機能するはずです。アクションパラメータを@selector(buttonPressed)、またはボタンが押されたときに呼び出す関数の名前に設定していることを確認してください。

 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] init]                                                                                  
target:self                                                                         
action:@selector(buttonPressed)];
于 2012-06-27T20:58:35.710 に答える
0

私はついに問題を見つけました。いくつかの厄介な理由によりrootViewController、ルートウィンドウのが適切に設定されておらず、モーダルビューで奇妙な動作が発生していました。

さらに不可解なのは、これまでのところiOS 4で正常に動作し、iOS 5で失敗したことです。このような問題を引き起こす本当の理由はまだ見当たらないと思いますが、正しく設定すると問題rootViewControllerAppDelegate解決しました。

于 2012-06-28T10:12:09.847 に答える