我的简单集合视图存在问题:委托中的 didSelectItemAtIndexPath
我无法获得对单元格的正确引用。这是我的代码:
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
{
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return categories.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CategorySelectionCVCell
cell.titleLabel.text = categories[indexPath.row]["name"] as? String
cell.backgroundColor = ConversionUtilities.getUIColorFrom(categories[indexPath.row]["color"] as! String)
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CategorySelectionCVCell
print("Cell with title: \(cell.titleLabel.text) and background color: \(cell.backgroundColor)")
collectionView.reloadData()
}
当我选择一个单元格时,我总是得到:
带标题的单元格:可选(“标签”)和背景颜色:nil
而且我不知道为什么,就像cellForItemAtIndexPath
无法正常工作,但cellForItemAtIndexPath
中的相同印刷品给了我:
带标题的单元格:可选(“水果”)和背景颜色: 可选(UIDeviceRGBColorSpace 1 1 0 1)
...是的,单元格标识符是“单元格”,我也在故事板中正确设置。此外,UICollectionViewDataSource
和UICollectionViewDelegate
也在IB中正确链接。
任何帮助?
答案 0 :(得分:2)
当你致电let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CategorySelectionCVCell
方法时,即
let cell = collectionView!.cellForItemAtIndexPath(indexPath) as! CategorySelectionCVCell
你得到一个准备好重复使用的空单元格,而不是当前在集合视图中的单元格。
虽然您可以通过调用
从集合视图中获取单元格let labelText = categories[indexPath.row]["name"] as? String
如果你需要的只是标签上的文字,最好直接进入模型,即
import java.util.HashSet;
import java.util.Set;
public class Intersection
{
public static void main(String[] args)
{
Set<String> s1 = new HashSet<String>();
Set<String> s2 = new HashSet<String>();
s1.add("a");
s1.add("c");
s2.add("b");
s2.add("c");
s1.retainAll(s2);
System.out.println(s1);
}
}