上週我問了一個類似的問題,但我想我已經縮小到更具體的是什麼問題。自定義單元格正在加載並且在我使用collectionView.dequeReusableCellWithIdentifier("MenuCell", forIndexPath: indexPath) as MenuCollectionViewCell
時看起來會被正確調用「MenuCell」是我自定義單元格的重用標識符,而MenuCollectionViewCell是包含自定義代碼的swift文件。從調試代碼我已經確定UIImageView沒有被加載。我做了一張支票,這就是我想出的。爲什麼ImageView未被加載,並且只出現爲零,我不知道。我將發佈正在加載的文件和自定義單元代碼的代碼。UIImageView返回零自定義UICollectionViewCell
class MenuViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate
{
// Not sure if I really need this
@IBOutlet var menuCollectionView: MenuCollectionView!
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view
view.backgroundColor = UIColor(patternImage: UIImage(contentsOfFile: "behind_alert_view.png"))
// This was the fix here
self.menuCollectionView.delegate = self
self.menuCollectionView.dataSource = self
}
// Variables
var menuImagesArray = ["MyProfileIcon.png"]
// Data Source Protocol
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
{
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return menuImagesArray.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
var menuCell: MenuCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("MenuCell", forIndexPath: indexPath) as MenuCollectionViewCell
var image: UIImage!
if ((menuCell.imageView) != nil)
{
image = UIImage(named: menuImagesArray[indexPath.row])
}
menuCell.imageView.image = image
return menuCell
}
}
這裏是自定義單元格文件:
class MenuCollectionViewCell: UICollectionViewCell
{
@IBOutlet var imageView: UIImageView!
}
是我收到的錯誤是由於展開了一個可選的一個空值終止。問題是UIImageView肯定的,任何幫助搞清楚這將是偉大的!
EDIT /解決
問題是要在UICollectionView的連接。我有參考,但我沒有正確使用它。我試圖在故事板中設置dataSource和delegate,這似乎是我的問題。當我轉移到代碼並提供參考,並以我對這兩個調用的方式引用它時,它立即修復它。我希望這可以幫助別人,如果他們遇到同樣的問題!現在開始自定義它,因爲它彈出!
你連接在IB的imageView插座?您是否將IB中的單元格類更改爲MenuCollectionViewCell? – rdelmar 2014-09-22 14:59:28
我試圖在IB連接imageView,並且出現錯誤,提示您無法連接到原型單元。是的,我確信班級正確地改變了。也許imageView可以連接,我錯了嗎? – SamG 2014-09-22 15:24:55
插座必須定製到自定義單元格子類,而不是控制器(這就是爲什麼你會得到該錯誤)。 – rdelmar 2014-09-23 02:33:56