如何在不使用 swift 中的按钮的情况下将数据传递给另一个 ViewController
How to pass data to another ViewController without using a button in swift
我目前有此 Swift 代码,它不会将存储在 score 中的 int
值传递给 currentScore
,将 higherScore
传递给 highScore
。 currentScore
和 highScore
都在 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)
我目前有此 Swift 代码,它不会将存储在 score 中的 int
值传递给 currentScore
,将 higherScore
传递给 highScore
。 currentScore
和 highScore
都在 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)