我正试图从一个视图控制器转到另一个视图控制器,并将数据传递给下一个控制器,但我不断收到此错误:
无法将ViewController类型的值转换为[VC2]
安装程序如下所示:
NavigationController
是VC1的初始入口点ViewController1
是collectionViewController
,显示为VC2 ViewController2
是viewController
,只有一个容器来嵌入VC3 ViewController3
是带有静态表的tableViewController
的CollectionView。 VC3是我的destinationViewController
并嵌入在VC2中。当我从VC1中选择collectionViewCell
时,我得到Signal SIGABRT。
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
selectedImage = UIImage(named: wholeArray[indexPath.row]["image"] as! String)!
selectedLabel = wholeArray[indexPath.row]["name"] as? String
self.performSegueWithIdentifier("show", sender: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "show") {
let secondVC: ViewController02 = (segue.destinationViewController as? ViewController02)!
secondVC.image = selectedImage
secondVC.label = selectedLabel
}
}
由于UITableViewController
是UIViewController
的子类,因此此代码应该可以正常工作。我做错了什么?
** 更新了类型继承和确切错误消息的问题: **
class ViewController01: UICollectionViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
class ViewController02: UIViewController {
class ViewController03: UITableViewController, UICollectionViewDataSource, UICollectionViewDelegate,UIScrollViewDelegate {
class HeaderView: UIView {
2015-10-07 11:26:27.384 UITableViewHeader [45474:3576139] Interface Builder文件中的未知类_TtC17UITableViewHeader14ViewController。
无法将'UITableViewHeader.ViewController02'(0x107a38360)类型的值转换为'UITableViewHeader.ViewController03'(0x107a38a50)。
答案 0 :(得分:0)
在代码中更改此行
let secondVC: ViewController02 = (segue.destinationViewController as? ViewController02)!
要
let secondVC:ViewController02 = segue.destinationViewController as! ViewController02
或简单到:
let secondVC = segue.destinationViewController as! ViewController02