使用PrepareForSegue方法从UITableView传递到另一个

时间:2016-04-26 08:25:51

标签: ios iphone swift uitableview uiviewcontroller

我是一名初级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)。

如果有人知道我做错了什么,那可能会有所帮助!

谢谢!

2 个答案:

答案 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)

}