无法使用segues在视图控制器之间传递数据(Xcode 7)(Swift)

时间:2016-09-20 16:02:59

标签: swift xcode uiviewcontroller segue transfer

我一直在努力使用segues在视图控制器之间传递数据。我已经观看了很多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图片:

storyboard image

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我使用相同的代码制作了一个示例项目,并没有收到错误。您的代码没有任何问题。

试试这个:转到你的故事板并检查每个视图控制器的插座检查员,并确保你没有任何地方的插座。

答案 2 :(得分:0)

正如评论中所述,问题是您在UIViewController上使用push segue。

请注意推送和模态segue已被弃用...请查看此帖子条目,如果您有任何疑问,请告诉我

What's the difference between all the Selection Segues?