簡體   English   中英

將UIViewController xib加載到情節提要中的ContainerView

[英]Loading a UIViewController xib to ContainerView in storyboard

我有一個“容器” viewController,使用故事板保存了一些容器視圖。 每個容器視圖都有一個到嵌入式viewcontroller視圖的鏈接。

由於我正在從事大型項目,因此事實證明情節提要文件很大,並且包含許多“子” viecontrollers視圖布局。 當需要幾個人同時處理該文件時,處理該文件將是一個問題。 那對我不好。 我想知道是否有一種方法可以將viewcontroller的xib文件加載到每個容器視圖中,並且仍在使用情節提要。

意思是,為每個視圖控制器創建.xib文件,而不是將它們保存在情節提要中,然后將它們鏈接到情節提要中的容器視圖。

謝謝,

可以將視圖控制器布局移動到單獨的xib中。 如您所說,這是在情節提要之間共享布局的一種非常方便的方法。

在情節提要中設置容器視圖時,請確保刪除嵌入式ViewController中提供的視圖 將ViewController的自定義類設置為您的類名稱。 將xib命名為與該類匹配的名稱(例如FooViewController.xib,以便在加載FooViewController.m時可以找到它。)

如果不在情節提要視圖控制器布局中刪除“視圖”,則會看到該空視圖。 您的視圖控制器中的viewDidLoad方法將不會被調用,因為該視圖是默認的Storyboard視圖。

我正在iOS 7之前的項目上使用Xcode 6.1 for iOS 8。

是的你可以。 一些觀察:

  1. 您需要做的就是放入使用NIB時使用的那種代碼。 對於容器,這就是典型的容器方法 如果尚未通過代碼完成圍堵,請參閱《 View Controller編程指南》中的 創建自定義容器View Controller ”。 最重要的是,當您過渡到非故事板場景(或添加非故事板子視圖控制器)時,只需像在基於NIB的環境中通常使用的那樣對其進行編碼即可。 您不能在情節提要中表示基於NIB的場景。 但是您只需像使用NIB一樣獲得控制器即可:

     SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil]; 
  2. 顯然,您失去了使用故事板的許多好處(例如,根據父場景中的容器視圖調整子場景的大小),但是您的狀況並不比在NIB環境中糟糕。 但是,在回答有關是否可以“將它們鏈接到情節提要中的容器視圖”的問題時,您不能在情節提要中表示這種關系,而是通過編程方式將它們關聯起來。

  3. 如果您的單獨團隊在單場景環境中工作,則可以使用此NIB方法。 但是,您還應該考慮只有多個情節提要,每個邏輯團隊一個。 就像在此NIB方法中一樣,在情節提要之間進行轉換時,您仍然必須訴諸代碼,但是如果您的團隊中有一個要處理多個場景,則他們可以在項目的一部分中享受情節提要的好處。 當您想進入下一個情節提要中的第一個場景時,可以:

     UIStoryboard *secondaryStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil]; SecondViewController *controller = [secondaryStoryboard instantiateInitialViewController]; 
  4. 如果你的孩子需要過渡到你的故事板新的場景,我覺得有用我自己添加parentStoryboard屬性為我的孩子控制器,它可以再有用的,如果你需要做一些像instantiateViewControllerWithIdentifier 顯然,如果您不打算過渡到新的控制器,則可能不需要這樣做,但是如果是這樣,則擁有UIStoryboard屬性可能會很有用。

暫無
暫無

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

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