我有2个控制器:ViewController和GalleryViewController(上面有集合视图)。在情节提要中,我将GalleryViewController中的collectionView设置为Scrolling Enabled
到false
。现在,如何将其从true
更改为ViewController
?
我已经试过了:
var vc: GalleryViewController?
vc.collectionView.scrollEnabled = true
但它不起作用。还有另一种解决方案,可以用来更改其他控制器(ViewController)的滚动吗?
最佳答案
您的代码将创建一个新的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
}
}
如果您使用的是Tab控制器,并假设您知道GalleryView的索引,那么我们将其称为
indexGalleryView
,那么它就更简单了var vc = tabBarController!.viewControllers![indexGalleryView] as! GalleryViewController
vc.collectionView.scrollEnabled = true
并且如果您有ViewController-> Container-> Embed GalleryViewController-> CollectionView,则可以在顶级控制器的viewDidLoad中获得嵌入式ViewController的句柄,如下所示
for vc in self.childViewControllers
{
if vc.isKindOfClass(GalleryViewController)
{
myGalleryViewController = vc as! GalleryViewController
}
}
一旦有了
myGalleryViewController
,您就应该能够访问子视图上的所有内容关于ios - 如何启用从另一个 Controller 滚动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35717449/