当我按下 pdf 文件将打开的单元格时,我有一个集合视图充当图像轮播,下面的代码将执行此操作。 我想做的是有一个按钮来按下它,而不是按下单元格本身。 但是我不知道该怎么做,因为那行self.selectedIndexPath = indexPath
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.selectedIndexPath = indexPath
self.performSegue(withIdentifier: "showBook", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == "showBook"
{
let vc = segue.destination as! showMo2lfatVC
vc.book = self.arrayBooks[self.selectedIndexPath.row]
}
}
这是我的按钮功能,这是我尝试过的
@IBAction func openBook(_ sender: Any) {
// self.selectedIndexPath = indexPath
// self.performSegue(withIdentifier: "showImage", sender: self)
// self.selectedIndexPath = indexPath
}
使用UICollectionView
的**indexPathsForSelectedItems**
属性来获取所有selected
UICollectionViewCells
的indexPaths
。您获得的元素数量取决于UICollectionView
中是否允许multiple selection
。
例:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == "showBook"
{
let vc = segue.destination as! ViewController2
if let selectedIndexPath = self.collectionView.indexPathsForSelectedItems?.first //Here
{
vc.book = self.arrayBooks[selectedIndexPath.row]
}
}
}
@IBAction func openBook(_ sender: UIButton)
{
self.performSegue(withIdentifier: "showBook", sender: self)
}
无需创建任何单独的变量selectedIndexPath
来跟踪所选单元格。只需拨打button tap
performSegue
,然后完成其余的工作prepare(for segue: UIStoryboardSegue, sender: Any?)