gpt4 book ai didi

ios - 自定义 UICollectionCell 的 nil 标签

转载 作者:可可西里 更新时间:2023-11-01 00:51:48 24 4
gpt4 key购买 nike

编辑:似乎与 this 相同的问题
我使用自定义布局和单元格制作了 Collection View ,但我的单元格位置有点偏离,所以我决定对它们进行编号,以便我可以更轻松地调试它。我关注了这个人的answer使用标签为我的单元格编号。不知何故 myLabel 为零并导致我的应用程序崩溃。

我相信我已经正确连接了 socket ,但也许有人可以提供一份 list 让我检查我是否做错了什么。

View Controller

import UIKit

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

@IBOutlet var gridView: UICollectionView!

private let reuseIdentifier = "DesignCell"
private let numberOfSections = 1
private let numberOfCircles = 48

override func viewDidLoad() {
super.viewDidLoad()
self.gridView.registerClass(MyCell.self, forCellWithReuseIdentifier: reuseIdentifier)
}

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return numberOfSections
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return numberOfCircles
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCell

cell.myLabel.text = String(indexPath.item) // myLabel is nil and causes a crash
return cell
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}

GridLayout(我的自定义布局)

import UIKit
import Darwin

class GridLayout: UICollectionViewLayout {

private let numberOfColumns = 12
private let numberOfRows = 4

private var cache = [UICollectionViewLayoutAttributes]()
private var contentHeight: CGFloat = 0
private var contentWidth: CGFloat {
let insets = collectionView!.contentInset
return CGRectGetWidth(collectionView!.bounds) - insets.left - insets.right
}

override func prepareLayout() {
// some calculation i did for my cells
}

override func collectionViewContentSize() -> CGSize {
return CGSize(width: contentWidth, height: contentHeight)
}

override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
var layoutAttributes = [UICollectionViewLayoutAttributes]()

for attr in cache {
if CGRectIntersectsRect(attr.frame, rect) {
layoutAttributes.append(attr)
}
}
return layoutAttributes
}
}

我的细胞

import UIKit

class MyCell : UICollectionViewCell {

@IBOutlet weak var myLabel: UILabel!

}

最佳答案

尝试在 ViewController 类的 viewDidLoad() 中删除这一行:

self.gridView.registerClass(MyCell.self, forCellWithReuseIdentifier: reuseIdentifier)

不需要它,因为您已经在 Storyboard 中创建了 UICollectionView,连接到您的数据源和委托(delegate),并且您已经添加了所有必需的方法:

  • 部分项目数
  • cellForItemAtIndexPath

关于ios - 自定义 UICollectionCell 的 nil 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35239543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com