【发布时间】:2015-10-21 00:55:32
【问题描述】:
大约一个月前,我开始学习 swift(主要是从书本上),之前没有任何编程经验。我仍然难以理解几个概念,主要是值类型和引用类型,以及诸如委托之类的东西。这可能是我似乎无法找到以下问题的答案的原因。
我有一个 Xcode 项目,其中包含 2 个类,如 2 个 swift 文件。
- 包含集合视图的 viewController 类;
- collectionViewCell 类。
在 viewController 类中,我有一个方法可以禁用和启用 collectionView 的用户交互:
func collectionViewInteractionEnabled(boolean: Bool) {
collectionView.userInteractionEnabled = boolean
}
当从 viewController 类调用时,该方法有效。但是当从 collectionViewCell 类中调用时,我得到了这个:
“致命错误:在展开可选值时意外发现 nil”
Xcode 将我的函数的内容突出显示为罪魁祸首。这让我觉得collectionView 不存在collectionViewCell 类。但是我的婴儿编程大脑真的无法遵循解决这个问题所需的思维过程。
我找到的唯一解决方案是使用通知让函数执行。它有效,但没有其他我应该知道的方法吗?是否可以从不同的类调用函数,并且仍然让它像从声明函数的类调用一样执行?
编辑:在尝试 Patricks 的建议后更新:
问号确实会阻止应用程序崩溃,但不会改变代码的行为。 collectionView确实是在情节提要中创建的,其中连接了 3 个出口、引用、数据源和委托。
从viewController 类中调用并正确执行该函数。所以我假设它不是零。如果我尝试从collectionViewCell 类(不同的.swift 文件)调用它,那么它显然是零。我认为collectionViewCell' class just can't see it since thecollectionView` 是在其他地方创建的?这对我来说毫无意义,我越想越迷失。
可能是我只是从另一个文件中调用了错误的函数吗?我正在使用:
collectionViewCell 类中
ViewController().collectionViewInteractionEnabled(true)
【问题讨论】: