programing

UICollectionViewCell의 아울렛이 0인 이유는 무엇입니까?

javajsp 2023. 5. 24. 21:42

UICollectionViewCell의 아울렛이 0인 이유는 무엇입니까?

Interface Builder에서 사용자 지정 UICollectionViewCell을 만들고 이에 대한 뷰를 클래스에 바인딩한 다음 문자열을 사용하고 문자열의 레이블에 설정하려면 레이블 값이 0입니다.

override func viewDidLoad() {
    super.viewDidLoad()

    // Register cell classes
    self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
}

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

    var cell: LeftMenuCollectionViewCell
    cell = collectionView.dequeueReusableCellWithReuseIdentifier("ls", forIndexPath: indexPath) as LeftMenuCollectionViewCell
    println(cell.label) // <- this is nil, why??
    cell.label.text = "asd"

    return cell
}

그리고 하위 분류된 세포는

class LeftMenuCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}

전화했습니다self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")스토리보드를 사용하는 경우 이 이름을 부르고 싶지 않습니다.스토리보드에 있는 내용을 덮어씁니다.

여전히 문제가 있으면 확인하십시오.reuseIdentifier 있어서는 같습니다.dequeueReusableCellWithReuseIdentifier 그리고.storyboard.

이 줄을 제거하기만 하면 됩니다.

self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")

xib를 사용하는 경우, 이 코드 줄을 로드 보기에 추가했는지 확인합니다.

목표 C:

[self.collectionView registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellWithReuseIdentifier:@"MyCellIdentifier"];

스위프트:

collectionView.register(UINib(nibName:"MyCell", bundle: nil), forCellWithReuseIdentifier:"MyCellIdentifier")

그놈들 등록해야 돼요!

collectionView.register(UINib(nibName: "CustomCell", bundle: nil), forCellWithReuseIdentifier: "CustomCellId")

등록하는 방법은 두 가지가 있는 것 같은데 처음에는 잘못된 방법을 사용했습니다.나는 커스텀 xib 뷰를 가지고 있어서 두 번째 옵션에 등록했고, 우리는 데이터를 가지고 있습니다!

1:

collectionView?.register(YourItemClassName.self, forCellWithReuseIdentifier: "yourIdentifier") 

2:

collectionView?.register(UINib(nibName: "YourItemClassName", bundle: nil), forCellWithReuseIdentifier: "yourIdentifier")

저도 비슷한 문제가 있었는데, 제 실수는 CollectionViewCell이 레이블 텍스트를 변경할 수 있도록 위임하지 않은 것입니다.

제 생각에 가장 좋은 해결책은 스토리보드에서 직접 사용하는 것입니다.CollectionView또는 제거해야 합니다.CollectionViewCell당신의CollectionView다음 명령을 사용하여 셀을 등록합니다.

컬렉션 보기?레지스터(UINib(nibName: "YourItemClassName", 번들: nil), 재사용 식별자가 있는 CellWithRuseIdentifier: "yourIdentifier")

휴대폰을 등록하지 않으셨군요

fileprivate let yourIdentifier = ""yourIdentifier"
super.viewDidLoad() { 

//여기서 셀 컬렉션 보기를 등록해야 합니까?레지스터(이름 Of)재사용 식별자가 있는 셀의 Class.self: "your Identifier") }

언급URL : https://stackoverflow.com/questions/25165195/why-is-uicollectionviewcells-outlet-nil