- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个 Controller :ViewController 和 GalleryViewController(上面有 Collection View )。从我为 GalleryViewController Scrolling Enabled
中的 collectionView 设置为 false
的 Storyboard。现在,如何从 ViewController
将其更改为 true
?
我已经试过了:
var vc: GalleryViewController?
vc.collectionView.scrollEnabled = true
但它不起作用。是否有另一种解决方案可以让我从另一个 Controller (ViewController)更改滚动?
最佳答案
您的代码将创建一个新的 GalleryViewController
实例,您需要使用现有实例。
您有多种选择,部分取决于您如何从 ViewController
导航到 GalleryViewController
。
如果您从初始 Controller 创建 Gallery View,那么您应该使用 prepareForSegue
,类似这样
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
if segue!.identifier == "GallerySegueOrWhateverYouHaveCalledIt" {
let viewGalleryController:ViewGalleryController = segue!.destinationViewController as ViewGalleryController
let collectionViewLink = viewGalleryController.collectionView
}
}
如果您使用的是选项卡 Controller ,并且假设您知道 GalleryView 的索引,我们将其命名为 indexGalleryView
,那么它就更容易了
var vc = tabBarController!.viewControllers![indexGalleryView] as! GalleryViewController
vc.collectionView.scrollEnabled = true
如果你有一个 ViewController -> Container -> Embed GalleryViewController -> CollectionView,你可以像这样在顶级 Controller 的 viewDidLoad 中获取嵌入式 ViewController 的句柄
for vc in self.childViewControllers
{
if vc.isKindOfClass(GalleryViewController)
{
myGalleryViewController = vc as! GalleryViewController
}
}
一旦有了 myGalleryViewController
,您就应该能够访问 subview 上的所有内容
关于ios - 如何从另一个 Controller 启用滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717449/
我是一名优秀的程序员,十分优秀!