我有2个控制器:ViewController和GalleryViewController(上面有集合视图)。在情节提要中,我将GalleryViewController中的collectionView设置为Scrolling Enabledfalse。现在,如何将其从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/

10-14 18:52