簡體   English   中英

如何優雅地從一個嵌入式視圖導航到另一個視圖(在IB中使用布局)?

[英]How can I elegantly navigate from one embedded view to another (with layout in IB)?

用戶可以在該應用程序中執行“活動A”或“活動B”。 而且在A期間,查看者可以選擇查看嵌入的ViewB。(Activity B也是如此,只適用於相反的視圖。)

我在IB中的設置如下圖所示。 不知道有什么更好的方法,我創建了兩倍於我想要的活動場景:對於“執行活動A”分支,我有兩個並排的活動A場景副本。 第一個嵌入到視圖A的序列中; 第二個是嵌入到視圖B的序列。(“ B”設置是相反的。)

為避免重復,我確實使兩個活動分支都共享視圖A和B。盡管活動場景增加了一倍,但它們鏈接到的類(ActivityAViewController和ActivityBViewController)卻沒有。 我還沒有注意到任何復雜的情況。

與我所看到的其他解決方法相比,我選擇了上面的“推送”布局,因為視圖A和B都很昂貴。 我不想僅僅為了加載次要視圖而放棄主要視圖,也不想不必要地加載兩個視圖。 另外,我想在IB中執行此操作,因為真正的應用程序更復雜,並且看到那里的所有布局都有助於我理解和開發它。 話雖如此,我的方法仍然顯得愚蠢。

我的問題是

  1. 是否有更好的方法在IB中進行設置?
  2. 活動場景的共享視圖控制器會發生什么? 是為每個實例創建一個單獨的類實例,還是兩個場景最終共享同一實例?
  3. 同樣,共享視圖會怎樣?

蘋果的解釋似乎很清楚,盡管他們認為我比現在更了解Cocoa Touch和相關術語。 任何澄清和見解將不勝感激。

具有嵌入式視圖的導航情節提要

是否有更好的方法在IB中進行設置?

還有其他設置方法。 他們都有權衡。 您的方法具有一定的外觀,如果您想以不同的方式進行連接,則外觀會有所不同。 您的方法還具有以下優點:所有導航都由情節提要進行處理; 不需要額外的代碼。

備選方案包括將視圖A和B嵌入其自己的小導航控制器中。 然后切換到另一個視圖將涉及單擊該navigationController。 這避免了外部Activity A和B控制器的重復,但是它將通過向嵌入式視圖添加navigationBar來更改外觀。

您也可以這樣做,並隱藏導航欄,並從外部Activity A或B控制器傳遞一條消息,以告知何時按下另一個viewController。 這具有一些額外的非平凡編碼的缺點。 情節提要不再為您管理導航。

您也可以在UITabBarController中運行它。 如果只需要一個,則具有同時創建活動A和活動B的缺點,但是您可以在它們之間自由切換而無需重新創建任何視圖。

活動場景的共享視圖控制器會發生什么? 是為每個實例創建一個單獨的類實例,還是兩個場景最終共享同一實例?

每個序列(包括嵌入式序列)都會創建一個新的viewController實例。 沒有實例共享。

同樣,共享視圖會怎樣?

每次都會創建一個新的A和B實例。

暫無
暫無

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

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