我正在尝试从一个视图控制器切换到另一个视图控制器,并将数据传递到下一个控制器,但是我一直收到此错误:
无法将ViewController类型的值强制转换为[VC2]
安装程序如下所示:NavigationController
是VC1的初始入口点ViewController1
是显示对VC2的collectionViewController
ViewController2
是仅用于嵌入VC3的容器的viewController
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]接口构建器文件中的未知类_TtC17UITableViewHeader14ViewController。
无法将类型'UITableViewHeader.ViewController02'(0x107a38360)的值强制转换为'UITableViewHeader.ViewController03'(0x107a38a50)。
最佳答案
在您的代码中更改此行
let secondVC: ViewController02 = (segue.destinationViewController as? ViewController02)!
至
let secondVC:ViewController02 = segue.destinationViewController as! ViewController02
或简单地:
let secondVC = segue.destinationViewController as! ViewController02