我正在尝试从一个视图控制器切换到另一个视图控制器,并将数据传递到下一个控制器,但是我一直收到此错误:


  无法将ViewController类型的值强制转换为[VC2]


安装程序如下所示:


NavigationController是VC1的初始入口点
ViewController1是显示对VC2的collectionViewController
ViewController2是仅用于嵌入VC3的容器的viewController
ViewController3是具有静态表的tableViewController
collectionView。


ios - 无法将类型'UIViewController'的值强制转换为UITableViewController-LMLPHP

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
        }
    }


由于UITableViewControllerUIViewController的子类,因此此代码应该可以正常工作。我究竟做错了什么?

**更新了带有类型继承和确切错误消息的问题:**

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

07-27 14:43