web-dev-qa-db-ja.com

ストーリーボードでのモーダルとプッシュセグエの違いは何ですか?

modalPushセグエの正確な違いは何ですか?

Pushを使用すると、セグエがスタックに追加されるので、Pushを使用し続けると、メモリを占有し続けることがわかります。

誰かがこれら2つがどのように実装されているかを教えてもらえますか?

Modalセグエは簡単に作成できます ctrl-click 宛先にドラッグしますが、Pushを使用してそれを行うと、アプリがクラッシュします。

ボタンから、UINavigationControllerを持つUIViewControllerにプッシュしています。

175
Gaurav_soni

Push Segueは、ナビゲーションスタックに別のVCを追加しています。これは、プッシュを開始するVCが、スタックに追加されるVCが属する同じNavigation Controllerの一部であると想定しています。メモリー管理は、Navigation Controllerとディープスタックの問題ではありません。あるVCから別のVCに渡すオブジェクトを処理している限り、ランタイムがナビゲーションスタックを処理します。視覚的な表示については、画像を参照してください。 NavStack

モーダルセグエは、1つだけ== [[VC]> =別のVCモーダルを提示します。 VCはNavigation Controllerの一部である必要はなく、VCはモーダルで表示されるのが一般に、表示する(親)VCの「子」とみなされます。モーダルで表示されるVCは通常、ナビゲーションバーまたはタブバーなしです。提示するVCは、それが作成および提示したモーダルVCを破棄する役割も果たします。

お役に立てれば。

171
LJ Wilson

Swift 3.0およびXCode 8.2.1アップデート

1。プッシュセグエ

プッシュセグエはShowセグエと名前が変更されました。プッシュセグエを作成するには、親View ControllerをNavigation Controllerに埋め込む必要があります。 Navigation Controllerはナビゲーションバーを提供します。プッシュセグエで2つのView Controllerを接続すると、子View Controllerの上部にナビゲーションバーが自動的に表示されます。子View ControllerがNavigation Stackの上に追加されます。

enter image description here

プッシュセグエは、デフォルトの機能も提供します。子View Controllerには、親View Controllerに戻るための戻るボタンがあります。右にスワイプして、子View Controllerをポップすることもできます。プッシュセグエのアニメーションは、ページを水平にスライドさせるようなものです。

enter image description here

Navigation ControllerにないView ControllerからPushセグエを作成することは許可されていますが、そうするとNavigation Bar、アニメーション、ジェスチャーなどのすべての機能が失われます。この場合、最初にNavigation View Controller内に親View Controllerを埋め込み、次に子View Controllerにセグエをプッシュする必要があります。

enter image description here

2。モーダルセグエ

一方、モーダルセグエ(つまり、モーダルモードで表示)は、現在のView Controller上に表示されます。子View ControllerはNavigation View Controllerを継承しないため、Navigation View Controllerを備えたView Controllerからモーダルセグエを表示すると、Navigation Barが失われます。子View ControllerをNavigation Controllerに再度埋め込み、元に戻すには真新しいNavigation Stackを起動する必要があります。親のView Controllerに戻りたい場合は、自分でこれを実装し、コードからdismissを呼び出す必要があります。

enter image description here

モーダルセグエのアニメーションは、子View Controllerがページの下部から表示されることです。 Navigation View Controllerもこのデモではなくなりました

enter image description here

15
Fangming

プッシュビューはnavigationControllerで構築する必要があります。

master viewをクリックし、メニューバーで次を選択します。

EDITOR->embed in->navigationController
6

これは、ストーリーボードのカスタムプッシュおよびセグエメソッドを使用してコントロールをプッシュしています Story Board

また、モーダルは、ストーリーボードを使用せずにビューをナビゲートする方法です。

1
Pushkraj