如何从其他控制器启用滚动?

时间:2016-03-01 07:55:15

标签: ios swift uiviewcontroller uicollectionview

我有2个控制器:ViewController和GalleryViewController(上面有集合视图)。从我在GalleryViewController Scrolling Enabled中为collectionView设置的故事板到false。现在,如何从true

将其更改为ViewController

我试过这个:

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

但它不起作用。是否有另一种解决方案,我可以从另一个控制器(ViewController)更改滚动?

1 个答案:

答案 0 :(得分:1)

您的代码将创建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

如果您正在使用标签控制器,并假设您知道GalleryView的索引,请将其称为 for vc in self.childViewControllers { if vc.isKindOfClass(GalleryViewController) { myGalleryViewController = vc as! GalleryViewController } } ,然后就更容易了

myGalleryViewController

如果您有ViewController - >容器 - >嵌入GalleryViewController - > CollectionView,你可以在顶层控制器的viewDidLoad中获得嵌入式ViewController的句柄,如下所示

import {Router,Route,IndexRoute,hashHistory} from 'react-router'

一旦你有了import {Link} from 'react-router';,你就可以访问子视图上的所有内容