2017-06-22 9 views
-1

しばらくの間、iPhoneに焦点を当ててiPad devに戻りましょう。私は、iPhone上でnavスタックにプッシュされるが、iPad上のモーダルフォームシートで提示されるチェックアウトビューを持っています。 iOS 9以降の世界では、これを行う方法がありますか?iPhone上でView ControllerをプッシュしてiPad上でフォームシートとして表示する簡単な方法は?

if ipad { 
    self.presentViewController() 
} else { 
    self.navigationController?.pushViewController(viewController, animated: true 
} 

この方法はややシンプルです。私はたぶん、traitCollectionsを使用するという点で欠けているものがあるかどうか、またiOSが欠けている新しい適応ビットのいくつかを追加したいと思っています。

明らかに、私はifステートメントを実行するさまざまな方法を探しているわけではありません。私はそれが自動的に表示されるか、または適切なものとしてプッシュすることができる1つの方法があるかどうかを探しています。

答えて

0

私はそれを行うにはお勧めしませんが、あなたはそのようにそれを使用してUIUserInterfaceIdiomで解決策を見つけることができます。

switch UIDevice.current.userInterfaceIdiom { 
    case .pad: 
     break // iPad 
    case .phone: 
     break // iPhone 
    case .carPlay: 
     break 
    case .tv: 
     break 
    case .unspecified: 
     break 
    } 
1

あなたはこれを達成するためにサイズのクラスを使用することを検討すべきです。 iPad上でさえ、あなたがスキニービューを持っている状況があります。ビューを押すことはまだ理にかなっています。たとえば、アプリがスライドオーバーマルチタスクをサポートしていて、それをslideoverアプリとして起動した場合、幅は300ポイントになります。

ビューまたはビューコントローラのtraitCollectionを使用してhorizo​​ntalSizeClassにアクセスできます。

if self.traitCollection.horizontalSizeClass == .regular { 
    // present it 
} else { 
    // push it 
} 
関連する問題