CollectionView致命错误:在展开Optional值时意外发现nil

时间:2015-05-15 00:34:44

标签: ios iphone swift collectionview

我正在尝试在视图中定义的数组内添加一些图像的集合视图。该应用程序构建并运行正常,但当我导航到这个名为“Portfolio”的特定部分时,应用程序崩溃,在控制台中给我这个。

致命错误:在解包可选值时意外发现nil

任何人都可以从下面的代码中找出正在发生的事情吗?我已经尝试将问题包装在if语句中并使其不会崩溃,但之后图像将根本不显示。如果我只是定义一个UIBackgroundColor,它的工作方式应该如此。

import UIKit

class PortfolioView: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

var array:[String] = []

override func viewDidLoad() {

    array = ["PortImage1","PortImage2","PortImage3","PortImage4","PortImage5","PortImage6","PortImage7"]


    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return array.count
}


func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollectionViewCell

    cell.imageView.image = UIImage(named: array[indexPath.row])


    cell.imageView.layer.cornerRadius = cell.imageView.frame.size.width / 2
    cell.imageView.clipsToBounds = true


    cell.imageView.layer.borderWidth = 2.0
    cell.imageView.layer.borderColor = UIColor.whiteColor().CGColor


    return cell


}

}

2 个答案:

答案 0 :(得分:0)

从表面上看,只是因为你没有提供任何的相关信息而猜测,看来你已经定义了一个具有imageView的类CollectionViewCell属性,但是您无法通过该imageView属性的出口连接故事板/笔尖中的任何图像视图。因此,在加载时,您的imageView属性为零。

答案 1 :(得分:0)

在你的情况下,单元格无法找到imageView并崩溃,因为它发现它为零。 将标签说“100”添加到故事板中的imageView。 然后在按如下方式将单元格出列后,将以下行添加到代码中 : -

public void onRadioButtonClicked(View v) { //require to import the RadioButton class RadioButton rb1 = (RadioButton) findViewById(R.id.Radio_one); RadioButton rb2 = (RadioButton) findViewById(R.id.Radio_two); //is the current radio button now checked? boolean checked = ((RadioButton) v).isChecked(); //now check which radio button is selected //android switch statement switch(v.getId()){ case R.id.Radio_one: if(checked) //if first selected break; case R.id.Radio_two: if(checked) //if second selected break; }