swift版本:3.0
Xcode版本:8.0
错误全文:
Could not cast value of type ‘UINavigationController’ to ‘RedShirt.AddEmployeeTableViewController’
错误原因:
从AController segue 到BController的时候,由于BController是内嵌在NavigationController里的,所以无法直接转换
错误源码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ToEditSegue"{
let destinationController = segue.destination as! AddEmployeeTableViewController
let cellSender = sender as! EditEmployeeTableViewCell
destinationController.employee = employees[(tableView.indexPath(for: cellSender)?.row)!]
}
修正源码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ToEditSegue"{
let destinationNavigationController = segue.destination as! UINavigationController
let destinationController = destinationNavigationController.topViewController as! AddEmployeeTableViewController
let cellSender = sender as! EditEmployeeTableViewCell
destinationController.employee = employees[(tableView.indexPath(for: cellSender)?.row)!]
}
}
参考:
http://stackoverflow.com/questions/28788416/swift-prepareforsegue-with-navigation-controller