从自定义集合视图单元导航视图控制器而不使用Segue

时间:2015-02-19 09:06:59

标签: swift uicollectionviewcell viewcontroller

我制作了一个自定义集合单元格,并使用分离的.xib文件设计单元格界面。现在,我想在用户单击单元格时将视图导航到另一个视图控制器。

但它给了我这个错误

  

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

这是我的代码:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

    let productDetailsVC = self.storyboard?.instantiateViewControllerWithIdentifier("productDetailsVC") as ProductDetailsViewController

    // The next line is where the error occurs.
    productDetailsVC.label.text = self.products[indexPath.row].productName

    self.navigationController?.pushViewController(productDetailsVC, animated: true)

    //self.presentViewController(productDetailsVC, animated: true, completion: nil)


}

我检查了self.products [indexPath.row] .productName中的值,它存在。我用断点检查了它。你们有任何想法是什么问题吗?

你可以解释一下pushViewController和PresentViewController方法之间的区别。

谢谢!

1 个答案:

答案 0 :(得分:0)

非常感谢mosedw我得到了你的问题的解决方案。我尝试了另一个stackoverflow提问者的解决方案,但当我看到问题的解决方案时,我经历了你的问题。然后我尝试回答你的问题。现在我得到了解决方案。

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
{

   let productDetailsVC = self.storyboard?.instantiateViewControllerWithIdentifier("productDetailsVC") as ProductDetailsViewController

   // The next line is working fine now
   productDetailsVC.passDataToLabel = self.products[indexPath.row].productName

   self.navigationController?.pushViewController(productDetailsVC, animated: true)

}

在ProductDetailsViewController中

var passDataToLabel:String!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    label.text = passDataToLabel
 }