我的项目有一个拆分视图,点击一个按钮可以最小化主视图。我使用此功能为按钮最小化主视图:
@IBAction func newProposalBtnWasClicked(_ sender: AnyObject) {
if splitViewController?.preferredDisplayMode == .automatic {
splitViewController?.preferredDisplayMode = .primaryHidden
} else {
splitViewController?.preferredDisplayMode = .automatic
}
var sub = self.childViewControllers[1] as! ProductsPlatesViewController
sub.collectionView.reloadData()
}
当主视图设置为.primaryHidden时,我的单元格间隔错误:
在集合视图中,View控制器我定义了该函数:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
if splitViewController?.preferredDisplayMode == .primaryHidden {
return CGSize(width: self.view.frame.width/3.0 - 10.0, height: self.view.frame.height/4.0 - 10.0)
}
return CGSize(width: self.view.frame.width/2.0 - 10.0, height: self.view.frame.height/4.0 - 10.0)
}
但按下按钮时,该功能显然没有被调用。如何调用函数并重新定义每行的单元格数?
修改
我在我的按钮动作功能(上面编辑的代码)上更改了put reloadData()方法。
我的sizeForItemAtIndexPath函数仍然相同。我得到的结果是:
它类似于在设置preferedDisplayMode之前使用sizeForItemAtIndexPath,但是在代码中这是在调用reloadData()函数之前做出的。哪里出错了?