IT story

UICollectionViewCell의 콘센트가 왜없는가요?

hot-time 2020. 6. 23. 07:20
반응형

UICollectionViewCell의 콘센트가 왜없는가요?


Interface Builder에서 사용자 정의 UICollectionViewCell을 작성하고 뷰를 클래스에 바인딩 한 다음 문자열을 사용하여 문자열의 레이블로 설정하려고하면 tha 레이블에 nil 값이 있습니다.

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를 사용하는 경우이 코드 줄을 viewdidload에 추가했는지 확인하십시오.

목표 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")

비슷한 문제가 있었지만 레이블 텍스트를 변경할 수 있도록 CollectionViewCell을 위임하지 않은 것이 실수였습니다.


등록하는 두 가지 방법이 있고 첫 번째로 잘못된 방법을 사용하고있는 것 같습니다. 두 번째 옵션으로 등록 된 사용자 지정 xib보기가 있으며 데이터가 있습니다!

1:

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

2 :

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

참고 URL : https://stackoverflow.com/questions/25165195/why-is-uicollectionviewcells-outlet-nil

반응형