我一直在努力使用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图片:
答案 0 :(得分:0)
确保在点击按钮之前在标签textField
中输入一些文字,因为您使用强制解包将该标签的文字传递到下一个场景。
destViewController.labelText = textField.text! //here compiler expects that your textField has the value
答案 1 :(得分:0)
我使用相同的代码制作了一个示例项目,并没有收到错误。您的代码没有任何问题。
试试这个:转到你的故事板并检查每个视图控制器的插座检查员,并确保你没有任何地方的插座。
答案 2 :(得分:0)
正如评论中所述,问题是您在UIViewController上使用push segue。
请注意推送和模态segue已被弃用...请查看此帖子条目,如果您有任何疑问,请告诉我