-(void)reviewClicked:(id)sender
{
ReviewViewController *newView = [[ReviewViewController alloc] init];
newView.delegate = self;
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:newView];
[self presentModalViewController:navCon animated:YES];
}
私は splitViewController をセットアップしていますが、これがおそらくいくつかの問題を引き起こしている原因です。詳細ビュー コントローラー内に、クリックすると上記のコードを呼び出すボタンがあります。
目標は、ビューを画面の下から上にスライドさせて、ユーザーが選択内容を確認できるようにし、ボタンをクリックして元の詳細ビューに戻ることです。このコードは機能しており、モーダル ビューと元の詳細ビューの間を行き来できます。
問題は、画面を上にスライドした後、停止すべき場所を超えてスライドし続け、最終的に 10 ~ 15 ピクセル上に行きすぎて停止することです。基本的に、このモーダル ビューは非常に上にスライドするため、ビューのかなりの部分が画面の上部より上に表示されます。その間、同じ量のスペースが画面の下部にある「空の黒いスペース」であり、ビューが単に上に移動しすぎたことをさらに示唆しています.
問題を複雑にしているのは、横向きモードで問題なくスライドすることです。
問題は、なぜこのバグが発生して、モーダル ビューが画面の上部を超えてスライドしすぎているのか、誰か知っている人はいますか?
-=-=-=-=-=-=-
編集:申し訳ありませんが、その場所にnavConと入力するつもりでした。以上で直りました。
-=-=-=-=-=-=-
解決:
-(void)reviewClicked:(id)sender
{
ReviewViewController *newView = [[ReviewViewController alloc] init];
newView.delegate = self;
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:newView];
navCon.view.frame = CGRectMake(0, 0, 768, 1080);
[self presentModalViewController:navCon animated:YES];
}
試行錯誤の末、実際にビューのフレームを設定したことがないことに気付きました! それと同じくらい簡単な解決策...私は .xib ファイルを含む例を実行していましたが、それらのファイルが自動的にフレームを作成したため、完全に見落としていました!
将来これを見ている人は覚えておいてください。このフレームはポートレート モード専用です。横向きモードが必要な場合は、それに応じてフレームを変更してください。
navCon.view.frame = CGRectMake(0, 0, 1080, 768);