我在 CubeController 类中声明了一个 IBOutlet 并将其连接到 InterfaceBuilder,如下所示:
// Class CubeController
@IBOutlet weak var collectionView: UICollectionView!
每当我尝试从另一个类引用 collectionView 时,collectionView 始终是一个空可选。这是我的代码:
// Another class
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
collectionView.performBatchUpdates
({
print("selekt")
let mug = CubeController()
let colView = mug.collectionView
if let _ = colView
{
print("uhu")
}
}, completion: {_ in
})
}
打印了“selekt”,但没有打印“uhu”。这里发生了什么?我在这里犯了什么错误?。CubeController 的 collectionView 导出正在工作并在用户界面中自行显示。我如何识别错误?
最佳答案
View Controller 的 socket 仅在其 View 加载时才连接。
问题很可能是您正在实例化一个新实例,而不是使用对 View Controller 的现有实例的引用。如果是这种情况,可以寻求帮助here .
尽管也很可能出现这样的情况:您正在做的事情是不必要的。为什么不能使用传入的 collectionView
参数?或者在这些绝对不同的 Collection View 中?
最后,如果您确实需要一个新实例,那么您需要加载新 View Controller 的 View 。如果您以某种方式呈现该 View Controller ,则此操作会自动完成,但您可以使用 fooViewController.loadView() 强制执行。不过,我警告不要使用这种方法,因为除非您正在编写单元测试,否则这几乎肯定不是您需要做的。
关于ios - 来自另一个类的 collectionView IBOutlet 始终是空可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475633/