我制作了一个自定义集合单元格,并使用分离的.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方法之间的区别。谢谢!
答案 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
}