[ios] 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")


답변

등록하는 두 가지 방법이 있고 첫 번째로 잘못된 방법을 사용하고있는 것 같습니다. 두 번째 옵션으로 등록 된 사용자 지정 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”)