【Swift】【XCode】画面遷移時の「present」と「show」の違い
目次
presentとshowの違い
show
公式ドキュメント : https://developer.apple.com/documentation/uikit/uiviewcontroller/1621377-show
プライマリコンテキストでViewControllerを表示します
プライマリコンテキストとは、メインの画面になります。セカンダリはどこにあるのかというと、スプリットビューコントローラーを使用している場合に、左側に表示される画面になります。なので、スプリットビューコントローラーを使用している場合は、右側の大きい画面が書き換わることになります。通常の画面の場合は、そのまま画面遷移します。
The default implementation of this method calls the targetViewController(forAction:sender:) method to locate an object in the view controller hierarchy that overrides this method. It then calls the method on that target object, which displays the view controller in an appropriate way. If the targetViewController(forAction:sender:) method returns nil, this method uses the window’s root view controller to present vc modally.
この、targetViewControllerは、デフォルトだとUISplitViewController
かUINavigationController
が実装しています。なので、どちらかの画面遷移を実装したい場合に、このshow
関数を使用するといい感じに、システムが遷移させてくれます。
逆に、UISplitViewController
とUINavigationController
を使用していない場合は、通常のモーダル遷移を行います。
present
公式ドキュメント : https://developer.apple.com/documentation/uikit/uiviewcontroller/1621380-present
ビューコントローラをモーダルに表示します。
modalPresentationStyle
プロパティで指定されている、スタイルで画面遷移を行います。StoryboardでSegueを設定するときに出てくる、Present modally
と同じ挙動を行います。
【Swift】【XCode】画面遷移時の「present」と「show」の違い
https://blog.djima.net/2021/08/12/【Swift】【XCode】画面遷移時の「present」と「show」の違い/