2013-04-16 40 views
1

我有3個不同的子視圖直接在故事板中定義,所以他們也有插座。所有這些子視圖都意味着在不同的時間在屏幕上佔據相同的座標,只有一個座標在任何時候佔據空間,因此它看起來像一些外觀正在改變。我如何去做這件事?假設我也有一個枚舉,它定義了我目前所處的狀態,從而顯示該位置的子視圖。IOS故事板:爲給定位置加載多個子視圖

回答

2

兩個基本選項:

  1. 先走一步,這三個子視圖添加到您的場景。如果你這樣做,有幾個技巧,將讓你的生活在IB容易得多:

    • 對於每個視圖,轉到「身份檢查」選項卡(第三個)在遠展開「文檔」部分,併爲三個視圖中的每一個賦予唯一的「標籤」(不要與控件混淆;這只是IB將在內部用於引用您的視圖的標籤或描述)。這樣,當您瀏覽「文檔大綱」(中央面板左側顯示的所有場景列表)中列出的控件樹時,您將能夠找出哪個是哪個。當你處理這些重疊的視圖時,這個「文檔大綱」的強大命令將會讓你的生活更輕鬆。

    • 當您在場景中有三個視圖時,您可能會發現,將您想要處理的視圖拖到三個視圖列表的末尾(但與其相同的級別同行)在該「文件大綱」。然後您可以編輯該子視圖。在你的IB工作時,爲這三個子視圖重複這個過程。

    • 如果需要,您可以爲三個子視圖製作插座集合。當您想要對所有子視圖執行某些操作時,這會更容易。在處理只有三個時可能不是很有用,但如果你有更多的子視圖,這些集合可能是有用的。

    • 您可以定義獨特UIView子類各三個視圖,它可以讓你的IBOutlet引用列表有點更有條理有用。此外,任何特定於視圖的UI邏輯都可以分離到各個子視圖中。

    • 如果你使用這個技術,如果你打算在動畫這三個子視圖之間的過渡,它實際上給相當有用的只是把有問題的場景的頂層視圖這三個子視圖。在定義三個子視圖尺寸的場景中查看視圖非常有用,然後將這三個子視圖放入此新的中間子視圖中。這樣,當動畫變化時,您可以將動畫限制在屏幕的該部分。這個新的臨時UIView通常被稱爲容器視圖,但不應與您在IB中看到的iOS 6容器視圖混淆,後者與下面定義的下一種技術有關。

  2. 雖然所有這些招數可使三組重疊的意見,一個場景變得更輕鬆的操作和管理,其實我覺得一個自定義的容器視圖控制器是最好的一段路要走。父場景/視圖控制器的一個場景,以及三個不同子視圖中的每一個的單獨視圖控制器和IB場景。它需要一些額外的代碼(不難,但第一次做這件事時會有點陌生),但是你的代碼和IB場景很好地隔離。在架構上,這是最優雅的方法,恕我直言。如果你想這樣做,你應該是指:

相關問題