我正在尝试将Realm数据从Custom cell传递给Detail TableView Controller
ReactDOM.render(
<Form>
<InputEmail/>
</Form>,
document.getElementById('app')
);
我收到错误
无法转换'Taskio.TaskListTableViewController'类型的值 (0x10001f028)到'Taskio.TaskViewTableViewController'(0x10001f280)。
也尝试了
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
}
}
以及
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
}
}
修改
忘记将类名放入tableViewController的storyboard中。这是工作
答案 0 :(得分:2)
答案 1 :(得分:1)
您的destinationViewController
似乎与您期望的类型不同。您需要检查segue以确保它指向正确的控制器。如果是,您需要重新访问控制器类层次结构。
TaskListTableViewController
和TaskViewTableViewController
是否属于同一个类层次结构?根据{{3}},如果您的列表视图是任务视图的子类,则只能从TaskListTableViewController
转发到TaskViewTableViewController
。两者都只是UITableViewController
的子类是不够的。
换句话说,如果您的类层次结构如下所示,您将不能够从列表视图向下转换为任务视图:
----> TaskListTableViewController
/
UITableViewController
\
----> TaskViewTableViewController
但是如果你的层次结构看起来像这样,你就可以从一个层层叠加到另一层:
UITableViewController -> TaskListTableViewController -> TaskViewTableViewController
关于您第二次尝试转换为UINavigationController
,导航控制器根本与UITableViewController
无关,因此也无法将类型转换为该类。
您可以查看Swift docs on typecasting和UINavigationController
的继承层次结构。一个人需要成为另一个的子类才能使任何类型的转换工作。你会发现事实并非如此。
答案 2 :(得分:-2)
如果我从错误消息中理解,您正在尝试将TaskListTableViewController强制转换为TaskViewTableViewController。
目标是一个TaskListTableViewController,所以你必须像对待它一样。
let nextViewController = segue.destinationViewController as! TaskListTableViewController