我有UICollectionView
日历。它是一个可滚动的行。有些日期是不可选择的,因为该日期没有数据。其他可选择,因为该日期有IS数据。
当选择日期时,日历会在选定日期下划线并将其滚动到UICollectionView
的中心。
当点击没有日期的日期时,我有这个功能......
override func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
return //is there data for the date at this indexPath?
}
这会停止选择的单元格...但是,它仍会取消选择之前选择的单元格。
有一个shouldDeselect
函数但我不能使用它,因为我不知道tapped cell的索引。所以我无法确定是否应该取消选择该项目。
有更好的方法吗?
答案 0 :(得分:2)
当我重新加载collectionview时,这对我来说很简单:
func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
// return true whithout reloadData when necessarily
collectionView.reloadData()
return false
}
答案 1 :(得分:1)
我最近遇到了同样的问题,最后我采用了以下方法:
每当用户选择一个单元格时,请记住成员变量中的位置:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
myMemberVariable = indexPath.row
}
之后致电myCollectionView.reloadData()
在cellForRowAtIndexPath:
应用适当的单元格配置中:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MyCell.identifier, for: indexPath) as! MyCell
if indexPath.row == myMemberVariable && canSelectCellAt(indexPath: indexPath) {
cell.backgroundColor = .green
} else {
cell.backgroundColor = .gray
}
return cell
}
其中canSelectCellAt(indexPath: indexPath)
是一个函数,它为可选择的单元格返回true
,为不可选择的单元格返回false
,
答案 2 :(得分:1)
我的解决方案:
collectionView.allowsMultipleSelection = true
然后在didSelect中,取消选择所有先前选择的索引路径:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.indexPathsForSelectedItems?.filter({ $0 != indexPath }).forEach { indexPath in
collectionView.deselectItem(at: indexPath, animated: false)
}
}
答案 3 :(得分:1)
我的解决方案是启用多项选择
res = np.array([[]] * 11) # or better: res = np.zeros(
arr = np.array([[-2.7532e-03, 1.1973e-06, -2.7532e-03, 1.1973e-06],
[ 9.7603e-02, 1.9542e-06, 9.7603e-02, 1.9542e-06],
[ 1.9770e-01, 2.0952e-06, 1.9770e-01, 2.0952e-06],
[ 2.9758e-01, 2.1637e-06, 2.9758e-01, 2.1637e-06],
[ 3.9787e-01, 1.4734e-06, 3.9787e-01, 1.4734e-06],
[ 4.9795e-01, 1.3670e-06, 4.9795e-01, 1.3670e-06],
[ 5.9790e-01, 2.0252e-06, 5.9790e-01, 2.0252e-06],
[ 6.9817e-01, 2.1771e-06, 6.9817e-01, 2.1771e-06],
[ 7.9837e-01, 1.2704e-06, 7.9837e-01, 1.2704e-06],
[ 8.9822e-01, 2.1794e-06, 8.9822e-01, 2.1794e-06],
[ 9.9847e-01, 1.4442e-06, 9.9847e-01, 1.4442e-06]])
np.column_stack((res, arr))
和
array([[-2.7532e-03, 1.1973e-06, -2.7532e-03, 1.1973e-06],
[ 9.7603e-02, 1.9542e-06, 9.7603e-02, 1.9542e-06],
[ 1.9770e-01, 2.0952e-06, 1.9770e-01, 2.0952e-06],
[ 2.9758e-01, 2.1637e-06, 2.9758e-01, 2.1637e-06],
[ 3.9787e-01, 1.4734e-06, 3.9787e-01, 1.4734e-06],
[ 4.9795e-01, 1.3670e-06, 4.9795e-01, 1.3670e-06],
[ 5.9790e-01, 2.0252e-06, 5.9790e-01, 2.0252e-06],
[ 6.9817e-01, 2.1771e-06, 6.9817e-01, 2.1771e-06],
[ 7.9837e-01, 1.2704e-06, 7.9837e-01, 1.2704e-06],
[ 8.9822e-01, 2.1794e-06, 8.9822e-01, 2.1794e-06],
[ 9.9847e-01, 1.4442e-06, 9.9847e-01, 1.4442e-06]])
答案 4 :(得分:0)
我刚遇到这个问题(有点晚了吗?),要解决这个问题,您只需要使用
func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool {
代替shouldSelect