我有3個不同的子視圖直接在故事板中定義,所以他們也有插座。所有這些子視圖都意味着在不同的時間在屏幕上佔據相同的座標,只有一個座標在任何時候佔據空間,因此它看起來像一些外觀正在改變。我如何去做這件事?假設我也有一個枚舉,它定義了我目前所處的狀態,從而顯示該位置的子視圖。IOS故事板:爲給定位置加載多個子視圖
回答
兩個基本選項:
先走一步,這三個子視圖添加到您的場景。如果你這樣做,有幾個技巧,將讓你的生活在IB容易得多:
對於每個視圖,轉到「身份檢查」選項卡(第三個)在遠展開「文檔」部分,併爲三個視圖中的每一個賦予唯一的「標籤」(不要與控件混淆;這只是IB將在內部用於引用您的視圖的標籤或描述)。這樣,當您瀏覽「文檔大綱」(中央面板左側顯示的所有場景列表)中列出的控件樹時,您將能夠找出哪個是哪個。當你處理這些重疊的視圖時,這個「文檔大綱」的強大命令將會讓你的生活更輕鬆。
當您在場景中有三個視圖時,您可能會發現,將您想要處理的視圖拖到三個視圖列表的末尾(但與其相同的級別同行)在該「文件大綱」。然後您可以編輯該子視圖。在你的IB工作時,爲這三個子視圖重複這個過程。
如果需要,您可以爲三個子視圖製作插座集合。當您想要對所有子視圖執行某些操作時,這會更容易。在處理只有三個時可能不是很有用,但如果你有更多的子視圖,這些集合可能是有用的。
您可以定義獨特
UIView
子類各三個視圖,它可以讓你的IBOutlet
引用列表有點更有條理有用。此外,任何特定於視圖的UI邏輯都可以分離到各個子視圖中。如果你使用這個技術,如果你打算在動畫這三個子視圖之間的過渡,它實際上給不相當有用的只是把有問題的場景的頂層視圖這三個子視圖。在定義三個子視圖尺寸的場景中查看視圖非常有用,然後將這三個子視圖放入此新的中間子視圖中。這樣,當動畫變化時,您可以將動畫限制在屏幕的該部分。這個新的臨時
UIView
通常被稱爲容器視圖,但不應與您在IB中看到的iOS 6容器視圖混淆,後者與下面定義的下一種技術有關。
雖然所有這些招數可使三組重疊的意見,一個場景變得更輕鬆的操作和管理,其實我覺得一個自定義的容器視圖控制器是最好的一段路要走。父場景/視圖控制器的一個場景,以及三個不同子視圖中的每一個的單獨視圖控制器和IB場景。它需要一些額外的代碼(不難,但第一次做這件事時會有點陌生),但是你的代碼和IB場景很好地隔離。在架構上,這是最優雅的方法,恕我直言。如果你想這樣做,你應該是指:
WWDC 2011#102 UIViewController Containment(需要蘋果開發者ID)
的視圖控制器編程指南
- 的containment section
所述的的UIViewController參考文檔的containment section
- 1. iOS故事板 - 視圖未加載
- 2. iOS故事板 - 具有多個子視圖的容器
- 3. 卸載故事板視圖
- 4. 故事板 - > XIB |加載視圖
- 5. 爲故事板創建的視圖添加子視圖
- 6. 使用故事板作爲子視圖?
- 7. IBAction爲子視圖與故事板
- 8. 故事板 - 在故事板中爲同一個ViewController創建多個視圖
- 9. iOS - 具有故事板的UISplitViewController - 多個主視圖和多個詳細視圖
- 10. 故事板爭奪多個視圖?
- 11. iOS故事板約束每個子視圖到屏幕底部
- 12. UITableViewCell for headerview不加載故事板的子視圖
- 13. 將另一個故事板的視圖加載到另一個故事板的視圖
- 14. 如何加載在故事板自定義視圖?
- 15. 如何將故事板UIView設置爲視圖的子類?
- 16. iOS:使用故事板爲內部視圖分配一個類
- 17. 將故事板添加爲UIViewController中的子視圖
- 18. iOS 8鍵盤重置視圖控制器到故事板位置
- 19. 從故事板重新加載視圖時,以編程方式添加的iOS子視圖
- 20. iOS故事板
- 21. 用故事板,UISplitViewController和多個細節視圖(MultipleDetailViews用故事板)
- 22. 發送子視圖回從故事板ios
- 23. 在IOS中的故事板中隱藏子視圖
- 24. 故事板未呈現添加視圖
- 25. 向故事板視圖添加Tableview
- 26. 故事板NSTabView TabViewItem定位
- 27. iOS NSAutoLayoutConstraint:未設置故事板中的視圖
- 28. Xcode iOS:如何配置從故事板獲取的GLKit視圖?
- 29. 動態加載故事板
- 30. iOS addView:從無限制的故事板添加視圖