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

Posted

技术标签:

【中文标题】使用 PrepareForSegue 方法从 UITableView 传递到另一个【英文标题】:Passing from a UITableView to another with PrepareForSegue method 【发布时间】:2016-04-26 08:25:50 【问题描述】:

我是一名初级 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)的值转换为“fitness.UnitTableViewController”(0x108196d48)。

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

谢谢!

【问题讨论】:

请发布当前类名和目标类名及其属性 为什么不使用 didSelectedRowAtIndex 去另一个 ViewController ? 【参考方案1】:

正如您所说,问题在于以下几行:

if segue.identifier == "getValueFromCategory" 
  let viewController = (segue.destinationViewController as? UnitTableViewController)!

错误信息告诉你这个segue的destinationViewController其实不是一个UnitTableViewController。你可能认为它是,但它不是。您需要检查故事板中的这个转场,看看它的目的地到底是什么。

错误消息将其描述为 UIViewController 的事实使我怀疑您忘记在情节提要的此视图控制器的身份检查器中输入任何视图控制器类型:

【讨论】:

您好,非常感谢您的回答。我不知道为什么,但在情节提要上,我无法访问这些信息,只写“无选择”你知道为什么吗?我正在寻找尝试你的答案。【参考方案2】:

方法 1

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 


    let objNextViewController : NextViewController =  segue.destinationViewController as! NextViewController

    // objNextViewController.array = currentClassArray


或者

方法二

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)


【讨论】:

以上是关于使用 PrepareForSegue 方法从 UITableView 传递到另一个的主要内容,如果未能解决你的问题,请参考以下文章

对 UITableView 使用 didSelectRowAtIndexPath 或 prepareForSegue 方法?

从 prepareForSegue:sender 设置 UITableView 委托和数据源时出错:

使用 prepareForSegue 设置方法值

Swift:使用 prepareForSegue 将 UIView 容器的高度设置为嵌入式 UITableView 的高度

如何使用 prepareForSegue 从二维数组传递值

来自一个视图控制器的两个segue,prepareForSegue