好吧,我已经尝试了协议(参见Swift: collectionviewHeader delegate not working?),但我现在正在尝试一种更简单的方法从另一个类调用一个函数,但无论我做什么,我都会收到SIGABRT错误。
我的主视图控制器是一个MSMessagesAppViewController,我的故事板中有一个集合视图。故事板中的标题单元格有一个名为HeaderCollectionReusableView
的单独类。我需要调用一个函数来动画标题单元格大小的变化,这意味着标题类中的一个函数。
这是我在主类中创建标题单元格的地方:
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView: HeaderCollectionReusableView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerCell", for: indexPath as IndexPath) as! HeaderCollectionReusableView
//header1 = headerView //here I tried to set the view to a variable
return headerView
}
我试图将此标头存储在类宽变量中,以便我可以调用其类中的函数。问题是做这样的事情:
var header1 = UICollectionReusableView()
然后在上面的函数设置中header1 = headerView as! UICollectionReusableView
给出错误:
由于未捕获的异常而终止应用 ' NSInternalInconsistencyException',原因:'布局属性 索引路径的补充项目
或制作变量
var header1 = HeaderCollectionReusableView()
这是:
无法从3835继承CoreMedia权限:(null)2017-01-31 20:02:31.442 MessagesExtension [3836:1672474] ***终止app到期 未被捕获的例外' CALayerInvalidGeometry',原因:' CALayer position包含NaN:
这不可能吗?如何在标题单元格类中调用函数?