segue 不在 segue 中传输字符串(swift4)
segue not transferring string in segue (swift4)
我下面的代码试图从 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)
}
您应该使用 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"
}
}
performSeguewithidentifier 实际上只是允许切换(在 ViewController 之间)到 happen.While prepareForSegue 准备数据以在视图控制器之间传递,它的默认实现什么都不做;您可以覆盖它以将相关数据传递给新的视图控制器
我下面的代码试图从 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)
}
您应该使用 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"
}
}
performSeguewithidentifier 实际上只是允许切换(在 ViewController 之间)到 happen.While prepareForSegue 准备数据以在视图控制器之间传递,它的默认实现什么都不做;您可以覆盖它以将相关数据传递给新的视图控制器