如何在不使用 swift 中的按钮的情况下将数据传递给另一个 ViewController

How to pass data to another ViewController without using a button in swift

我目前有此 Swift 代码,它不会将存储在 score 中的 int 值传递给 currentScore,将 higherScore 传递给 highScorecurrentScorehighScore 都在 GameOverViewController 上实例化。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "GameOverVC" {
        let svc: GameOverViewController = segue.destinationViewController as! GameOverViewController
        score = svc.currentScore
        higherScore = svc.highScore
    }
}

我目前正在使用故事板推送到下一个视图。这里是推送码。

if let resultController = self.storyboard?.instantiateViewControllerWithIdentifier("GameOverVC") as? GameOverViewController {
    self.presentViewController(resultController, animated: true, completion: nil)
}

所有代码都可以正常编译,所以我需要一个实际的 UIButton 还是我需要在方法或 GameOverViewCotroller 中添加其他内容?

你赋值的方式不对...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "GameOverVC" {
        let svc: GameOverViewController = segue.destinationViewController as! GameOverViewController
        svc.currentScore = score //pass self.score to svc.currentScore
        svc.highScore = higherScore //pass self.higherScore to svc.currentScore
    }
}

只需恢复并尝试您没有正确分配值

 score = svc.currentScore
 higherScore = svc.highScore

  svc.currentScore = score 
  svc.highScore = higherScore

如果你想通过图像来做这样的事情- 在 prepareForSegue 中,您无法访问目标视图控制器的 @IBOutlets,因为它们尚未设置。您应该将图像分配给目标视图控制器的 属性,然后将其移动到 viewDidLoad:

中的位置

在源视图控制器中:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if segue.identifier == "toBrowsePage" {
    let dvc = segue.destinationViewController as! ListPage
    dvc.myImage = postingImage.image
}

} 在目标视图控制器中:

class ListPage: UIViewController { @IBOutlet 弱变量 browsingImage:UIImageView! var myImage: UIImage!

override func viewDidLoad() {
    super.viewDidLoad()
    browsingImage.image = myImage
}

}

您可以通过 2 种方法触发您的 segue

将一个按钮拖到您的 segue 并在界面生成器中以这种方式触发它

或者在你的视图控制器中你可以调用

self.performSegueWithIdentifier("GameOverVC", sender: self)