Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法强制转换类型为';TableViewController';至';TableViewController';_Ios_Swift_Segue - Fatal编程技术网

Ios 无法强制转换类型为';TableViewController';至';TableViewController';

Ios 无法强制转换类型为';TableViewController';至';TableViewController';,ios,swift,segue,Ios,Swift,Segue,我正在尝试将领域数据从自定义单元格传递到DetailTableView控制器 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "viewTask" { let nextViewController = segue.destinationViewController as! TaskViewTableViewContro

我正在尝试将领域数据从自定义单元格传递到DetailTableView控制器

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "viewTask" {
        let nextViewController = segue.destinationViewController as!  TaskViewTableViewController
        let indexPath : NSIndexPath = self.tableView?.indexPathForSelectedRow as NSIndexPath!
        let task = tasks![indexPath.row]
        nextViewController.name = task.name
        nextViewController.notes = task.notes
        nextViewController.date = task.date
        nextViewController.timeLength = task.timeLength
    }
}
我犯了个错误

无法强制转换“Taskio.TaskListTableViewController”类型的值 (0x10001f028)到“Taskio.TaskViewTableViewController”(0x10001f280)

也尝试过

   override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "viewTask" {
            let nav = segue.destinationViewController as! UINavigationController
            let nextViewController = segue.destinationViewController as!  TaskViewTableViewController
            let indexPath : NSIndexPath = self.tableView?.indexPathForSelectedRow as NSIndexPath!
            let task = tasks![indexPath.row]
            nextViewController.name = task.name
            nextViewController.notes = task.notes
            nextViewController.date = task.date
            nextViewController.timeLength = task.timeLength
        }
    }
以及

let nextViewController :  TaskViewTableViewController = segue.destinationViewController as!  TaskViewTableViewController
编辑


忘记将类名放入tableViewController的故事板中。它正在工作

如果我从错误消息中了解到,您正在尝试将TaskListTableViewController强制转换为TaskViewTableViewController

目标是TaskListTableViewController,因此必须将其视为一个

let nextViewController = segue.destinationViewController as!  TaskListTableViewController

您的
destinationViewController
似乎不是您期望的类型。您需要检查segue以确保它指向正确的控制器。如果是,则需要重新访问控制器类层次结构

TaskListTableViewController
TaskViewTableViewController
是否属于同一类层次结构?根据,如果列表视图是任务视图的子类,则只能从
TaskListTableViewController
向下转换到
TaskViewTableViewController
。仅仅是
UITableViewController
的子类是不够的

换句话说,如果您的类层次结构如下所示,您将无法从列表视图向下转换到任务视图:

                      ----> TaskListTableViewController
                     /
UITableViewController
                     \
                      ----> TaskViewTableViewController
但如果您的层次结构如下所示,您将能够从一个向下转换到另一个:

UITableViewController -> TaskListTableViewController -> TaskViewTableViewController

关于您第二次尝试强制转换到
UINavigationController
,导航控制器与
UITableViewController
完全不相关,因此也无法将其类型强制转换到该类


您可以检查和的继承层次结构。任何类型的转换都需要一个是另一个的子类。你会发现情况并非如此。

对我来说,问题是我忘了在情节提要中输入类名


1。如果你能看完我的全部帖子,我试过了。二,。尝试将TaskListTableViewController强制转换为TaskViewTableViewController时未反转,因此目标是TaskViewTableViewController这就是问题所在。您的目标不是TaskViewTableViewController。您的代码不正确。因为TaskList是我要将数据传递给TaskView的控制器。。。我把它修好了,只是忘了把类名放在情节提要控制器上。但无论如何,感谢你的帮助。我的等级制度看起来你的第二个头衔真的有误导性。标题让我相信你们在Swift中遇到了一些有趣的场景。问题正文指出了另一种情况(因为实际的错误消息与您在标题中输入的内容相差甚远)。我面临着类似的问题,而且由于我是Xcode新手,我不理解您的陈述“忘记将类名放入TableViewController的故事板”。请出示密码好吗?算了吧。我想出来了。