我目前有这个Swift代码,它不会将存储在分数中的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
?
答案 0 :(得分:0)
您指定的值是错误的方式......
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
}
}
答案 1 :(得分:0)
只是还原并尝试正确分配值
score = svc.currentScore
higherScore = svc.highScore
到
svc.currentScore = score
svc.highScore = higherScore
答案 2 :(得分:0)
如果您想传递图像,请执行以下操作 - 在prepareForSegue中,您无法访问目标视图控制器的@IBOutlets,因为它们尚未设置。您应该将图像分配给目标视图控制器的属性,然后将其移动到viewDidLoad中的位置:
在源视图控制器中:
覆盖func prepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){
if segue.identifier == "toBrowsePage" {
let dvc = segue.destinationViewController as! ListPage
dvc.myImage = postingImage.image
}
} 在目标视图控制器中:
class ListPage:UIViewController { @IBOutlet弱var的浏览图片:UIImageView! var myImage:UIImage!
override func viewDidLoad() {
super.viewDidLoad()
browsingImage.image = myImage
}
}
答案 3 :(得分:0)
你可以通过2种方法触发你的segue
将按钮拖到segue并在“界面构建器”
中以此方式触发或在您的视图控制器中,您可以致电
self.performSegueWithIdentifier("GameOverVC", sender: self)