下面的代码试图从twoviewcontroller到视图控制器中隔离一个值。 segue正在工作,我可以从视图控制器转到视图控制器。但是,segue并没有传递值。在VC1上的日志文件中,即使我从vc2转到vc1仍然什么也没说
class ViewController: UIViewController {
var score = ""
override func viewDidLoad() {
super.viewDidLoad()
print("mm:",score)
if score == "" {
FIRE.loadGif(name: "pGif")
}
if score == "b"{
FIRE.loadGif(name: "ezgif.com-video-to-gif")
}
}}
第二视图控制器
class twoViewController: UIViewController {
let FIRE = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(FIRE)
FIRE.addTarget(self, action:#selector(handleRegisterb), for: .allTouchEvents)
}
@objc func handleRegisterb(sender: UIButton){
let vc = ViewController()
vc.score = "b"
performSegue(withIdentifier: "beg", sender: nil)
}
答案 0 :(得分:2)
performSeguewithidentifier 实际上只是允许在ViewController之间进行切换。虽然 prepareForSegue 准备在视图控制器之间传递数据,但它的默认实现不执行任何操作。您可以覆盖它以将相关数据传递给新的视图控制器
答案 1 :(得分:1)
您应该使用prepare
方法通过segue
传递数据,
@objc func handleRegisterb(sender: UIButton){
performSegue(withIdentifier: "beg", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "beg") {
let vc = segue.destination as! ViewController
vc.score = "b"
}
}