2016-03-01 28 views
1

我有2個控制器:ViewController和GalleryViewController(帶有集合視圖)。從我設置的GalleryViewController Scrolling Enabled中的collectionView到false的故事版。現在,我如何將其從ViewController更改爲true如何啓用從另一個控制器滾動?

我已經試過這樣:

var vc: GalleryViewController? 
vc.collectionView.scrollEnabled = true 

,但它不工作。有另一種解決方案,我可以從另一個控制器(ViewController)更改滾動嗎?

回答

1

您的代碼將創建一個新的GalleryViewController實例,並且您需要使用現有的實例。

您有很多選擇,部分取決於您如何從ViewController導航到GalleryViewController

如果您從最初的控制器創建圖庫視圖,那麼你應該使用prepareForSegue,像這樣

override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) { 
    if segue!.identifier == "GallerySegueOrWhateverYouHaveCalledIt" { 
     let viewGalleryController:ViewGalleryController = segue!.destinationViewController as ViewGalleryController 
     let collectionViewLink = viewGalleryController.collectionView 
    } 

} 

如果您使用的是選項卡控制器,並假設你知道你的圖庫視圖索引,讓我們把它indexGalleryView,那麼它更容易

var vc = tabBarController!.viewControllers![indexGalleryView] as! GalleryViewController 
vc.collectionView.scrollEnabled = true 

如果你有一個視圖控制器 - >容器 - >嵌入GalleryViewController - >的CollectionView,你可以在一個手柄嵌入的ViewController這樣

for vc in self.childViewControllers 
    { 
     if vc.isKindOfClass(GalleryViewController) 
     { 
      myGalleryViewController = vc as! GalleryViewController 
     } 
    } 

頂層控制器的viewDidLoad一旦你有myGalleryViewController,你應該能夠在子視圖

+0

沒有訪問一切,它在視圖控制器的嵌入控制器。我認爲這種方法不適用於它=/ –

+0

好吧 - 更新的答案 – Russell

+0

哦,不,ViewController在TabBar上,但GalleryVC在ViewController中嵌入VC –

相關問題