我一直在尝试设置一个集合视图,我让用户提交了几个字符串,我将其放入数组并通过集合视图的cellForItemAt函数回调。但是,每当我在集合视图的顶部添加一行时,它就会在最后一个单元格标签的顶部添加单元格标签,以便they stack like this。请注意我添加的每个新单词如何包含渲染中的所有其他前一个单词。
我在cellForItemAt的代码是
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "InterestsCell", for: indexPath) as? InterestsCell {
cell.interestLabel.text = array[indexPath.row]
return cell
} else {
return UICollectionViewCell()
}
}
和按下添加按钮时的代码是
func addTapped() {
let interest = interestsField.text
array.insert(interest!, at: 0)
interestsField.text = ""
collectionView.reloadData()
}
我不确定发生了什么。我到处寻找并尝试使用prepareForReuse(),但它似乎没有用。我后来尝试通过调用didSelect来删除单元格,并且单元格不会再次消失。任何帮助表示赞赏!
答案 0 :(得分:1)
为此,请在项目中粘贴这些功能
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 1
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 1
}
你可以玩弄值:)
答案 1 :(得分:0)
使用UITableView可以轻松实现。因此,请尝试使用UITableView而不是UICollectionView。
答案 2 :(得分:0)
我多次遇到同样的问题。大多数时候,添加"配置"代码到UICollectionViewCell就可以了。也许移动你的" interestField.text"和您的单元格的任何其他配置将解决问题。我有时会得到那些重叠或错误的配置。希望它有所帮助
答案 3 :(得分:0)
每次设置文本时,您似乎都在添加新标签。如果您想懒洋洋地加载UILabel,则需要添加lazy
lazy var interestLabel: UILabel = {
...
}()
我不会这样做,我会创建对标签的引用
weak var interestLabel: UILabel!
然后在setupViews方法中添加标签
func setupViews() {
...
let interestLabel = UILabel()
...
contentView.addSubview(interestLabel)
self.interestLabel = interestLabel
}