准备在斯威夫特塞格

我正面临错误消息:

"UIStoryboardSegue does not have a member named 'identifier'" 

这是导致错误的代码

 if (segue.identifier == "Load View") { // pass data to next view } 

在Obj-C上使用像这样很好:

 if ([segue.identifier isEqualToString:@"Load View"]) { // pass data to next view } 

我究竟做错了什么?

这似乎是由于在UITableViewController子类模板中的问题。 它带有prepareForSegue方法的一个版本,需要你打开segue。

将您当前的prepareForSegue函数replace为:

 override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "Load View") { // pass data to next view } } 

这个版本隐含地解开参数,所以你应该没问题。

我认为问题是你必须使用! 解开标识符

我有

 override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) { if segue!.identifier == "Details" { let viewController:ViewController = segue!.destinationViewController as ViewController let indexPath = self.tableView.indexPathForSelectedRow() viewController.pinCode = self.exams[indexPath.row] } } 

我的理解是没有! 你只是得到一个真实或错误的价值

斯威夫特4,斯威夫特3

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "MySegueId"{ if let nextViewController = segue.destination as? NextViewController{ nextViewController.valueOfxyz = "XYZ" //Or pass any values nextViewController.valueOf123 = 123 } } } 

Swift 1.2

  override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if (segue.identifier == "ShowDeal") { if let viewController: DealLandingViewController = segue.destinationViewController as? DealLandingViewController { viewController.dealEntry = deal } } } 

对于Swift 2.3:

在didSelectRowAtindexPath创build执行Segue

例如:

  self.performSegue(withIdentifier: "uiView", sender: self) 

之后创build一个prepareforSegue函数来捕获目标segue并传递值:

例如:

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "uiView"{ let destView = segue.destination as! WebViewController let indexpath = self.newsTableView.indexPathForSelectedRow let indexurl = tableDatalist[(indexpath?.row)!].link destView.UrlRec = indexurl //let url = } } 

您需要在Destination ViewController中创build一个名为UrlRec的variables

 override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) { if(segue!.identifier){ var name = segue!.identifier; if (name.compare("Load View") == 0){ } } } 

你不能用==比较标识符,你必须使用compare()方法

使用ID更改部分右侧面板中的segue标识符。 图标以匹配您在条件中使用的string。