【问题标题】:segue not transferring string in segue (swift4)segue 没有在 segue 中传输字符串(swift4)
【发布时间】:2018-12-25 19:26:14
【问题描述】:

我下面的代码试图将一个值从 twoviewcontroller 转移到视图控制器。 segue 正在工作,我可以从视图控制器转到视图控制器。然而,segue 并没有转移价值。即使我从 vc2 转到 vc1,在 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)

}

【问题讨论】:

    标签: ios string swift4 segue func


    【解决方案1】:

    performSeguewithidentifier 实际上只是允许切换(视图控制器之间)发生。而 prepareForSegue 准备数据以在视图控制器之间传递,并且它的默认实现什么也不做;您可以覆盖它以将相关数据传递给新的视图控制器

    【讨论】:

      【解决方案2】:

      你应该使用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"
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 2020-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多