swift UICollectionView在以下位置显示了选定项:第一次单击单元格无效

w1jd8yoj  于 2022-11-28  发布在  Swift
关注(0)|答案(1)|浏览(138)

就像标题中所写的那样,didSelectedItemAt是bug,但这比标题中的要复杂一些,我解释道:
我尝试编写一个列出一些内容的应用程序。因此,我有一个ViewController,其中包含一个TableView和一个CollectionView。开始时,tableView的hidden设置为false,而collectionView的hidden设置为true。我在导航栏上有一个按钮,用于切换CollectionView / TableView的hidden true/false(我希望我糟糕的英语能被理解!)。因此,didSelectedRowAt运行良好,但didSelectedItemAt不好。当我第一次单击单元格时,没有任何React(至少在屏幕上),但第二次点击是工作.....与索引路径的第一次点击...我不知道为什么会发生这种情况。
有人知道为什么吗?
下面是应用程序的一些代码:

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
    print (dogs[indexPath.row].name)
    let vc = storyboard?.instantiateViewController(withIdentifier: "DogDetailsView") as? DogDetailsView
    vc?.nameSend = dogs[indexPath.row].name
    vc?.infoSend = dogs[indexPath.row].info
    self.navigationController?.pushViewController(vc!, animated: true)
}

谢谢你帮忙

1mrurvl1

1mrurvl11#

您正在使用错误委托方法请使用以下方法

- (void)collectionView:(UICollectionView *)collectionView 
didSelectItemAtIndexPath:(NSIndexPath *)indexPath;

didDeselect在第二次点击后仍然有效的原因是,你已经打开了allowMultilpleSelection,当你第一次点击该单元格时,它会被选中,但是你没有实现正确的代理来听到它。当你再次点击时,该单元格现在被取消选中。这就是为什么你以这种方式在实现的方法中获得回调。

相关问题