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

时间:2015-10-07 15:05:10

标签: ios iphone swift uiviewcontroller collectionview

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

  

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

安装程序如下所示:

  • NavigationController是VC1的初始入口点
  • ViewController1collectionViewController,显示为VC2
  • 的segue
  • ViewController2viewController,只有一个容器来嵌入VC3
  • ViewController3是带有静态表的tableViewController 的CollectionView。

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

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

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 :(得分:0)

在代码中更改此行

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

let secondVC:ViewController02 = segue.destinationViewController as! ViewController02

或简单到:

    let secondVC = segue.destinationViewController as! ViewController02