2017-04-27 65 views
1

當我打印在MyCell類中聲明的IBOutlets時,它們出現爲零。UICollectionView中的IBOutlets爲零 - 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) 
} 

} 

有沒有我應該在視圖控制器的viewDidLoad中被初始化/註冊了myCell類中的任何其他方式?

+0

你做在Interface Builder中的單元格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

完美!非常感謝。所以類需要與xibs註冊不同?你能給我一個好的文檔來閱讀它。我對於迅速而言是全新的。 –

+0

@AsthaGupta區別在於,只有在代碼中創建單元格子視圖時,才應該註冊一個類。如果您使用xib文件 - 註冊一個筆尖。 – kamil3

+0

在我的情況下,其投擲無法加載捆綁中的NIB。任何想法? – Alok

1

在您的自定義單元格的xib中,您需要將您的視圖拖動到文件的所有者上並將它們連接到它們的IBOutlets。

0

如果您使用的是.xib for cell,則必須使用Control-Drag從您的視圖拖放到文件的所有者並將它們連接起來,以製作參考插座。