segue未在segue中传输字符串(swift4)

时间:2018-12-25 04:41:27

标签: ios string swift4 segue func

下面的代码试图从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)

}

2 个答案:

答案 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"
    }
}