9

そのため、私のユニバーサル アプリには、ユーザーがシステムから既存のメモのリスト (単純な Web サービスを介して取得) を確認し、必要に応じて新しいメモを作成できるセクションがあります。したがって、iPhone の場合は非常にシンプルなレイアウトで、リストを表示するための TableViewController で、新しい項目を追加するためのモーダルビューを表示する NavigationBar に「追加」ボタンがあります。ただし、iPad では、同じレイアウトに多くの無駄なスペースがあるため、popOver メソッドを使用してリストを popOver に表示し、そこから追加できるようにすることにしました。私の問題は、ユーザーが PopOver ビュー内の [追加] ボタンをクリックすると、モーダル ビューがポップオーバー ビュー内ではなく全画面表示になることです。これまでのコードは次のとおりです。

-(void) AddButtonPressed:(id)sender {

NewNoteVC *newNote = [[[NewNoteVC alloc] initWithNibName:@"NewNoteVC" bundle:nil] autorelease];
newNote.defaultClientID = defaultClientID;
UINavigationController *navCon = [[[UINavigationController alloc] initWithRootViewController:newNote] autorelease];
if ([isPopOver isEqualToString:@"YES"]) {
    [navCon setModalInPopover:YES];
    [self.navigationController setModalInPopover:YES];
    [self.navigationController presentModalViewController:navCon animated:YES];
}
else {
    [self.navigationController presentModalViewController:navCon animated:YES];
}

}

「isPopOver」文字列は、この TableView を呼び出した前の画面から送信された単なるプレースホルダーです (パフォーマンスを向上させるためにこれをブール値に切り替えることができることはわかっています。これをすぐに試してみました)。どこかを台無しにしたことは知っていますが、これを正しく機能させるために必要な設定がわかりません。

4

2 に答える 2

26

modalPresentationStyleビューコントローラを「現在のコンテキスト」として定義する必要があります。

navCon.modalPresentationStyle = UIModalPresentationCurrentContext;

これにより、モーダルビューコントローラーがポップオーバーのルートコントローラーのようにポップオーバーを埋めます。

于 2013-03-14T20:23:23.897 に答える
2

と setのpresentViewController:animated:completion:代わりに を使用してみてくださいpresentModalViewController:animated:self.navigationController.definesPresentationContext = YES

于 2013-03-14T19:54:00.117 に答える