0

UIModalPresentationStyleアダプティブ スタイルに設定されたビュー コントローラーをモーダルに表示していますUIModalPresentationPopover。このスタイルは、横にコンパクトな環境 (iPhone の縦長) で画面全体に表示されます。横レギュラー、縦コンパクト環境(iPhone 6 Plus横)の場合はフォームシートに表示されます。そして通常の通常環境(iPad)ではポップオーバーとして表示されます。これは望ましい動作です。

そのコントローラーが実際にどのように表示されるか (フォーム シート、全画面表示、またはポップオーバー) をプログラムで決定する必要があります。表示されているView Controller内からそれを判断するにはどうすればよいですか?

その理由は、ポップオーバー内にない場合にのみ、[完了] ボタンを追加する必要があるためです。(または、ポップオーバーにある場合は非表示にします。)

ビュー コントローラの作成:

let viewController = ...
viewController.modalPresentationStyle = .Popover

let popoverController = viewController.popoverPresentationController
popoverController?.barButtonItem = settingsButton

presentViewController(viewController, animated: true, completion: nil)

viewController の内部:

- (void)viewDidLoad {
    [super viewDidLoad];

    //self.modalPresentationStyle is Popover even in the case where it's presented over the full screen
    //self.popoverPresentationController is not nil even when presented full screen
}
4

1 に答える 1