【问题标题】:Can't pass data between view controllers using segues (Xcode 7) (Swift)无法使用 segue (Xcode 7) (Swift) 在视图控制器之间传递数据
【发布时间】:2016-09-20 16:02:58
【问题描述】:

我一直在努力使用 segue 在视图控制器之间传递数据。我看过很多 youtube 视频教程并在论坛上搜索,但我不知道为什么它不起作用。我没有收到任何错误消息,但是当我单击“按钮”时,模拟器崩溃了。我很想得到一些帮助!谢谢!

代码如下:

ViewController1:

    import UIKit

class ViewController: UIViewController {

    @IBOutlet var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let destViewController : ViewController2 = segue.destinationViewController as! ViewController2

        destViewController.labelText = textField.text!

    }

}

ViewController2:

import Foundation
import UIKit

class ViewController2 : UIViewController {

    @IBOutlet var Label: UILabel!

    var labelText : String = ""

    override func viewDidLoad() {

        Label.text = labelText

    }

}

故事板图片:

storyboard image

【问题讨论】:

  • 哪一行崩溃了?
  • @Alife 你错过了 segue.identifier = " some identifier"
  • 在您的 viewController2 上尝试将此行 var labelText : String = "" 更改为此 var labelText : String!为防止模拟器崩溃,请尝试更改此“destViewController.labelText = textField.text!”到这个“ destViewController.labelText = textField.text ??”文本字段是空的,这就是为什么什么也没发生“”
  • @Shanmugasundharamselvadurai 我在哪里插入 segue 标识符?
  • @Santosh 我在 appDelegate.swift 文件中收到错误“Thead 1: Signal SIGABRT”,但我检查了所有连接。

标签: swift xcode uiviewcontroller segue transfer


【解决方案1】:

正如评论中所述,问题在于您在 UIViewController 上使用了推送序列。

请注意,push 和 modal segues 已被弃用...请查看此帖子条目,如果您有任何疑问,请告诉我

What's the difference between all the Selection Segues?

【讨论】:

    【解决方案2】:

    确保在点击按钮之前在标签textField 中输入一些文本,因为您正在使用强制展开将该标签的文本传递到下一个场景。

      destViewController.labelText = textField.text! //here compiler expects that your textField has the value
    

    【讨论】:

      【解决方案3】:

      我使用您的相同代码创建了一个示例项目,但没有出现错误。你的代码没有问题。

      试试这个:转到您的故事板并检查每个视图控制器的插座检查器,并确保您没有无处可去的插座。

      【讨论】:

      • 我查了一下,没有找到任何东西。我确实收到了一个 SIGABRT 错误。
      • 这是您通常在未连接插座时遇到的错误。你所有的网点都应该有一个实心圆圈。您应该在 ViewController(文本字段和视图)上有 2 个出口,在 ViewController 2(标签和视图)上有 2 个出口。
      猜你喜欢
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2015-05-24
      相关资源
      最近更新 更多