簡體   English   中英

在導航堆棧中模態顯示視圖控制器

[英]Presenting a view controller modally within a navigation stack

這是我的情況:

我在導航控制器中嵌入了兩個視圖控制器。 我稱它們為“發件人”和“目的地”

基本上,我要實現的是在導航堆棧中將“發送方”與“目標”“替換”,使得按下“發送方”上的一個按鈕會選擇“目標”,但同時按下導航欄中的“ <返回”按鈕和目標將導致相同的視圖控制器。

這是問題所在:我希望這兩個視圖控制器之間的過渡是“水平翻轉”,所以我創建了一個連接“發送者”和“目標”的segue,類型為“呈現模態”,過渡為“水平翻轉”,。 在發件人中,我選擇“定義上下文”選項。

現在,對於連接序列:

-當我選擇“ Over Current Context”進行演示時,它確實滿足我的要求! ...除了動畫看起來有點古怪。 基本上,發件人保持平坦和靜態,而目標翻轉到其上方,而不是它們“一起翻轉”。 這是有道理的,因為在發送方上顯示序列,但這並不是我想要的。

-當我選擇“當前上下文”進行演示時,動畫看起來很棒! ...除非我按導航欄中的“ <后退”按鈕,否則只會導致帶有導航欄的純黑色視圖,如果再次在該視圖上按“ <后退”按鈕,則會得到以下異常:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview'

有人知道我如何才能實現我的目標嗎? 這是正確的方法嗎? 我已經看到了一些建議,可以嘗試將視圖控制器的視圖翻轉到新視圖,而不是將整個視圖控制器翻轉到另一個視圖控制器。 但是,故事板中的一個視圖控制器是否可以具有兩個“全尺寸”視圖?

謝謝!

我確信可以使用多種方法,但是我首先想到的是為“發件人”和“目標”視圖創建一個容器視圖。

所以你有了 ...

  • 帶有根視圖控制器(“ RVC”)的NavigationController
  • 容器視圖控制器(“ CVC”)
  • 發件人VC
  • 目標VC

而不是將“ RVC”設置為“發件人”,而是將其設置為“ CVC” ...“ CVC”最初將“發件人”加載到其“容器視圖”中。在這一點上,點擊<Back自然會帶您回到“RVC”

當您點擊按鈕(或用於啟動下一個過渡的任何方法)轉到“目標”時,可以在容器視圖內使用“將發送方替換為目標”的過渡...此時,因為“ CVC”仍然是堆棧頂部的視圖控制器,請點擊<Back再次將您帶回到“ RVC”

希望有道理:)

演示示例可在此處獲取: https : //github.com/DonMag/ContainerViewExample

暫無
暫無

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

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