【问题标题】:Can't get the value of a var in another class无法获取另一个类中 var 的值
【发布时间】:2018-12-25 17:13:48
【问题描述】:

我正在尝试从另一个类中获取 String var 的值,但是当我在新类上使用它时,该值是空的。 我有 MainViewController.swift 类:

    var movieIDSelected = String()

@IBAction func tapPosterButton(_ sender: UIButton) {
    switch sender.tag
    {
    case 101: movieIDSelected = theaterMovieID[0]
    print(movieIDSelected) //The value isn't empty
        break
    }
  }

第二个 MovieViewController.swift 类:

var HomeView = ViewPop()

override func viewDidLoad() {
    super.viewDidLoad()

    let movieID = HomeView.movieIDSelected
    print(movieID) //The value is empty
}

【问题讨论】:

  • 这不是正确的方式,展示你如何呈现 MovieViewController 然后解决方案很简单,如果可能的话加上窗口层次结构

标签: ios swift string var


【解决方案1】:

用你当前的代码在 MainVC 中试试这个

if let home = UIApplication.shared.keyWindow?.rootViewController as? ViewPop {
   print("home exists ",home.movieIDSelected)
}

//

但是你应该只有一个到destinationVC的segue并将它链接到VC而不是每个按钮的segue,然后在按钮操作中实现prepareForSegue并触发performSegue以进行segue

//

@IBAction func tapPosterButton(_ sender: UIButton) {
    switch sender.tag
    {
       case 101: movieIDSelected = theaterMovieID[0]
        print(movieIDSelected) //The value isn't empty
        self.performSegue(withIdentifier: "goToNext", sender:1)

        break
    }
}

//

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

      let des = segue.destination as! MovieViewController

      des.sendedValue = self.movieIDSelected

      des.buttonNumber = sender as! Int

}

//

class MovieViewController : UIViewController {

     var sendedValue = ""

    var buttonNumber = 0 // default value won't affect 
}

【讨论】:

  • 感谢您的帮助,但是当我输入此内容时,出现错误:“'UIApplication' 类型的值没有成员'keywindow'”
  • 再次复制答案并尝试
  • 谢谢,但现在.. 我收到错误“无法将 'CornTime.MovieViewController' (0x104334160) 类型的值转换为 'CornTime.MainViewController' (0x104333cf0)。”
  • 我的意思是将上述变量添加到 MovieViewController 中,仅复制它们并粘贴到该类,再次复制答案
  • 哦,谢谢!!!这现在对我有用!非常非常错误感谢您的帮助和您的时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多