首页 文章

无法将类型'UIViewController'的值转换为UITableViewController

提问于
浏览
0

我试图从一个视图控制器转到另一个视图控制器,并将数据传递给下一个控制器,但我不断收到此错误:

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

安装程序如下所示:

  • NavigationController 是VC1的初始入口点

  • ViewController1collectionViewController ,显示到VC2的segue

  • ViewController2viewController ,只有一个容器来嵌入VC3

  • ViewController3 是带有静态表和collectionView的 tableViewController .

enter image description here

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 的子类,因此该代码应该可以正常工作 . 我究竟做错了什么?

** Updated question with type inheritance and exact error message: **

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) .

1 回答

  • 0

    在代码中更改此行

    let secondVC: ViewController02 = (segue.destinationViewController as? ViewController02)!
    

    let secondVC:ViewController02 = segue.destinationViewController as! ViewController02
    

    或者简单到:

    let secondVC = segue.destinationViewController as! ViewController02
    

相关问题