就像标题中所写的那样,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)
}
谢谢您的帮助:)
答案 0 :(得分:0)
您使用了错误的委托方法。使用以下内容
- (void)collectionView:(UICollectionView *)collectionView
didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
第二次点击后didDeselect
仍在工作的原因是,您打开了allowMultilpleSelection
并在每次点击时都选择了该单元格,但是您并未实现正确的委托听说。再次点击时,该单元格现在被取消选择。这就是为什么您以这种方式在实现的方法中获取回调的原因。