2017-04-27 9 views
1

MyCellクラスで宣言したIBOutletsを印刷すると、それらはゼロになります。UICollectionViewのIBOutletsがnil - 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") **セルを登録する場所を表示してください。 – 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を使用している場合は、ビューからファイルの所有者にControl-Dragを使用して参照アウトレットを作成して接続する必要があります。

関連する問題