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")
답변
등록하는 두 가지 방법이 있고 첫 번째로 잘못된 방법을 사용하고있는 것 같습니다. 두 번째 옵션으로 등록 된 사용자 지정 xib보기가 있으며 데이터가 있습니다!
1:
collectionView?.register(YourItemClassName.self, forCellWithReuseIdentifier: "yourIdentifier")
2 :
collectionView?.register(UINib(nibName: "YourItemClassName", bundle: nil), forCellWithReuseIdentifier: "yourIdentifier")
답변
비슷한 문제가 있었지만 레이블 텍스트를 변경할 수 있도록 CollectionViewCell을 위임하지 않은 것이 실수였습니다.
답변
그 가장 좋은 방법은 추가 위치를 직접 스토리 보드에서 사용하는 것입니다 생각 CollectionView
당신이를 제거해야 대안, CollectionViewCell
당신에서 CollectionView
스토리 보드에 다음과 같은 명령을 사용하여 셀을 등록 :
collectionView? .register (UINib (nibName : “YourItemClassName”, 번들 : nil), forCellWithReuseIdentifier : “yourIdentifier”)