UICollectionView didSelectedItemAt:第一次单击单元格不起作用

时间:2018-11-20 18:19:02

标签: ios swift uicollectionview

就像标题中所写的那样,didSelectedItemAt令人烦恼,但我要解释一下,它比标题中的要复杂一些:

我尝试编写一个列出一些东西的应用程序的代码。因此,我在TableView和CollectionView中都有一个ViewController。在开始时,tableview的隐藏状态为false,collectionview的状态为true。我在导航栏上有一个按钮,用于将CollectionView / TableView切换为隐藏的true / false(希望我的英语水平能够理解!)。所以didSelectedRowAt运作良好,但didSelectedItemAt却不能。当我第一次单击一个单元格时,什么也没有发生(至少在屏幕上没有发生),但是第二次单击正在起作用.....有了第一次单击的索引路径...我不知道为什么会这样。 有人知道为什么吗? 这是该应用程序的一些代码:

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)
}

谢谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

您使用了错误的委托方法。使用以下内容

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

第二次点击后didDeselect仍在工作的原因是,您打开了allowMultilpleSelection并在每次点击时都选择了该单元格,但是您并未实现正确的委托听说。再次点击时,该单元格现在被取消选择。这就是为什么您以这种方式在实现的方法中获取回调的原因。