我是一名初级iOS开发人员。 目前我正在开发一个应用程序,我想创建设置,所以我有一个UITableViewController包含一个带有类别的UITableView,当你点击一个单元格时,你应该显示另一个包含所点击的所有值的UITableView类别。 这是代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier == "getValueFromCategory" {
let viewController = (segue.destinationViewController as? UnitTableViewController)!
let indexPath = self.tableView.indexPathForSelectedRow!.row
print(indexPath)
segue.
//print(viewController)
viewController!.toPass = self.categories[indexPath].titleCategory
}
}
如果我取消注释let viewController行,我收到此错误:无法转换类型' UITableViewController' (0x10b635c10)to' fitness.UnitTableViewController' (0x108196d48)。
如果有人知道我做错了什么,那可能会有所帮助!
谢谢!
答案 0 :(得分:0)
正如你所说,问题在于以下几点:
if segue.identifier == "getValueFromCategory" {
let viewController = (segue.destinationViewController as? UnitTableViewController)!
错误消息告诉您,此segue的destinationViewController实际上不是UnitTableViewController。你可能认为它是,但它不是。你需要在故事板中检查这个segue,看看目的端到底是什么。
错误消息将其描述为UIViewController这一事实让我怀疑您忘记在故事板中此视图控制器的Identity检查器中输入任何视图控制器类型:
答案 1 :(得分:0)
方法1
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
let objNextViewController : NextViewController = segue.destinationViewController as! NextViewController
// objNextViewController.array = currentClassArray
}
或
方法2
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
let objNextViewController = self.storyboard?.instantiateViewControllerWithIdentifier(“ID_NextViewController”) as? NextViewController
// objNextViewController.array = currentClassArray
self.navigationController?.pushViewController(objNextViewController!, animated: true)
}