簡體   English   中英

Storyboard中的Modal和Push segue有什么區別?

[英]What is the difference between Modal and Push segue in Storyboards?

有人可以向我解釋一下modalpush segue之間的確切區別是什么?

我知道當我們使用push ,segue會被添加到堆棧中,所以當我們繼續使用push它會不斷占用內存?

有人可以告訴我這兩個是如何實現的嗎?

只需按住Ctrl鍵並拖動到目標即可創建Modal segue,但是當我使用push我的應用程序崩潰時。

我正從按鈕推送到具有UIViewControllerUINavigationController

推送Segue正在向導航堆棧添加另一個VC。 這假設發起推送的VC是添加到堆棧的VC所屬的同一導航控制器的一部分。 內存管理不是導航控制器和深層堆棧的問題。 只要您正在處理可能從一個VC傳遞到另一個VC的對象,運行時就會處理導航堆棧。 查看圖像以獲取視覺指示: NavStack

模態Segue只是一個以模態方式呈現另一個VC的VC。 VC不必是導航控制器的一部分,並且以模態方式呈現的VC通常被認為是呈現(父)VC的“子”。 模態呈現的VC通常沒有任何導航欄或標簽欄。 呈現VC還負責解雇它創建和呈現的模態VC。

希望這可以幫助。

Swift 3.0和XCode 8.2.1更新

1.推Segue

Push segue已重命名為Show segue。 要創建push segue,父視圖控制器需要嵌入到導航控制器中。 導航控制器提供導航欄。 一旦用push segue連接兩個視圖控制器,子視圖控制器將自動在頂部有導航欄。 子視圖控制器將添加到導航堆棧的頂部。

在此輸入圖像描述

Push segue還提供默認功能。 子視圖控制器將有一個后退按鈕,可以返回到父視圖控制器。 您也可以向右滑動以彈出子視圖控制器。 push segue的動畫就像水平滑動頁面一樣。

在此輸入圖像描述

雖然您可以從不在導航控制器中的視圖控制器進行推送segue,但是當您這樣做時,您將丟失所有功能,如導航欄,動畫,手勢等。 在這種情況下,您應首先將父視圖控制器嵌入導航視圖控制器中,然后將push segue嵌入到子視圖控制器中。

在此輸入圖像描述

2.模態爭論

另一方面,模態segue(即,模態地存在)呈現在當前視圖控制器上。 子視圖控制器不會繼承導航視圖控制器,因此如果您從帶有導航視圖控制器的視圖控制器中呈現模態segue,導航欄將會丟失。 您必須再次將子視圖控制器嵌入導航控制器中,並在需要時啟動全新的導航堆棧。 如果你想回到父視圖控制器,你必須自己實現這個並調用代碼中的dismiss

在此輸入圖像描述

模態segue的動畫是子視圖控制器將從頁面底部出現。 導航視圖控制器也在此演示中消失了

在此輸入圖像描述

推送視圖必須在navigationController構建。

單擊master view ,然后在菜單欄中選擇:

EDITOR->embed in->navigationController

這是為故事板使用自定義推送和segue方法推動控件 故事板

Modal是在不使用Storyboard的情況下瀏覽視圖的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM