【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は、デフォルトだとUISplitViewControllerUINavigationControllerが実装しています。なので、どちらかの画面遷移を実装したい場合に、このshow関数を使用するといい感じに、システムが遷移させてくれます。

逆に、UISplitViewControllerUINavigationControllerを使用していない場合は、通常のモーダル遷移を行います。

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」の違い/

Author

Daiki Iijima

Posted on

2021-08-12

Updated on

2024-04-17

Licensed under