2017-04-27 5 views
1

MyCell 클래스에서 선언 한 IBOutlets를 인쇄하면 해당 값이 nil이됩니다.UICollectionView의 IBOutlets가 021입니다. Swift

방법의 ViewController에

public override func viewDidLoad() { 
    super.viewDidLoad() 
    self.seriesCollectionView.register(MyCell.self, forCellWithReuseIdentifier: "MyCell") 
} 

public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! MyCell 
    cell.setup() 

    return cell 
} 

MyCell 클래스

class MTSeriesViewCell: UICollectionViewCell { 
@IBOutlet weak var cellView: UIView! 

@IBOutlet weak var cellImageView: UIImageView! 
override func awakeFromNib() { 
    super.awakeFromNib() 
} 

public func setup() { 
    print(cellView) 
} 

} 

내가의 ViewController의있는 viewDidLoad에서/등록 MyCell 클래스를 초기화해야 다른 방법이 있습니까?

+0

당신이 인터페이스 빌더에서 셀 UI를 했는가? 그렇다면 셀 등록 위치를 보여주십시오. – SeanLintern88

+1

self.seriesCollectionView.register (MyCell.self, forCellWithReuseIdentifier : "MyCell") ** 셀 **에 대해 별도의 xib를 사용하지 않는 경우이 줄을 제거하십시오. – KKRocks

답변

3

대신 :

self.seriesCollectionView.register(MyCell.self, forCellWithReuseIdentifier: "MyCell")

사용 :

self.seriesCollectionView.register(UINib(nibName: "MyCellXibName", bundle: nil), forCellWithReuseIdentifier: "MyCell") 
+0

완벽! 고마워. 따라서 수업은 xib와 다르게 등록되어야합니까? 당신은 나에게 그것에 관해 읽을 좋은 의사를 주시겠습니까. 나는 완전히 새로운 신속합니다. –

+0

@AsthaGupta 차이점은 셀의 하위보기가 코드로 작성된 경우에만 클래스를 등록해야한다는 것입니다. xib 파일을 사용한다면 - 펜촉을 등록하십시오. – kamil3

+0

제 경우에는 던지기가 번들로 NIB를로드 할 수 없습니다. 어떤 생각? – Alok

1

사용자 셀의 xib에서 뷰에서 파일 소유자로 컨트롤을 드래그하여 IBOutlets에 연결해야합니다.

0

.xib를 사용하는 경우보기에서 Ctrl-Drag를 사용하여 파일 소유자에게 참조 콘센트를 만들고 연결해야합니다.