2014-10-17 60 views
7

在Xcode6中使用Swift for iOS8,我需要創建一個滾動視圖來滾動動態創建的卡片。卡片包含自己獨特的圖像,文本和按鈕功能,但共享相同的佈局。我無法理解如何在故事板中創建可重複使用的視圖控制器,從中可以構建每張卡片,然後將它們全部嵌入到滾動視圖容器中,以便一次一個地滑過它們。在滾動視圖中重新使用視圖控制器。 Swift iOS8開發

正常情況下,我想問一些關於Stack Overflow的更具體的問題,但經過幾個小時的研究後,我不知所措;您的幫助將非常感謝!

回答

11

您正在尋找自定義容器視圖控制器。

如果以編程方式執行此操作,則在父控制器上調用addChildViewController(從而將子視圖控制器添加到視圖控制器層次結構中),執行子視圖的所有配置(包括將其添加到父控制器的視圖層次結構中)然後在最後,調用didMoveToParentViewController對孩子:

let childController = self.storyboard?.instantiateViewControllerWithIdentifier("storyboardIdForChildScene") as UIViewController! 
addChildViewController(childController) 
childController.view.frame = ... 
scrollView.addSubview(childController.view) 
childController.didMoveToParentViewController(self) 

當編程刪除,你扭轉這一過程中,對孩子叫willMoveToParentViewController:nil,從它的父刪除子視圖,當全部完成,調用removeFromParentViewController

childController.willMoveToParentViewController(nil) 
childController.view.removeFromSuperview() 
childController.removeFromParentViewController() 

如果在Interface Builder這樣做,它更容易,從「對象庫」,只需要拖動「容器視圖」到你的父視圖控制器的一幕:

container view

欲瞭解更多有關如何請執行此操作,請參閱「視圖控制器編程指南」中的Create Custom Container View Controllers有關爲了保持視圖控制器層次結構與視圖層次結構同步而進行這些遏制調用很重要的討論,請參閱WWDC 2011視頻Implementing UIViewController Containment

+0

謝謝!我目前正在瀏覽您的參考資料並消化所有這些信息。從它的外觀來看,雖然我應該可以在具有我想要的佈局的故事板中創建一個ViewController,但將該ViewController連接到ScrollView的容器視圖中,然後以獨特的屬性以編程方式複製原始ViewController以創建所有我的牌? – madeFromCode 2014-10-17 18:02:40

+0

如果以編程方式進行,您將「實例化」新的子視圖控制器(如上所示),而不是「重複」。 – Rob 2014-10-17 18:23:43

+0

對!對不起,錯過了。我完全理解了OOP的概念並實例化了一個類的一個實例,以便根據該類創建多個對象。我遇到的麻煩是瞭解如何在故事板中創建該類,然後實例化多個實例來填充我的滾動視圖。這絕對看起來像你讓我走在正確的道路上。我正在觀看您現在鏈接的視頻以準備自己,然後我會嘗試實施它。 – madeFromCode 2014-10-17 18:45:07

相關問題