我正在创建一个应用程序,它会将分数保存到变量中,当您单击按钮时,它会将分数添加到分数并将其显示在标签上。我的问题是,我有3个视图控制器,每个连接到同一个类。为了转换到不同的视图控制器,我只是在故事板中创建了一个移动到另一个视图的按钮。我的麻烦是,当我转到这个新视图时,分数会重置,当我回到第一个视图时,分数会再次重置。我相信问题是每当我切换视图时,类重新运行代码,这是我将评分变量声明为零的地方。当我改变观看时,我怎么能拥有它,我的分数保持不变?最后一件事:我尝试循环打印命令告诉我我的分数,当我在第一个视图中添加分数时,它会按预期显示,但是当我切换视图并在第二个视图中添加分数时,它会打印我的第一个分数,然后我的第二个分数一遍又一遍。每次切换视图时,它都会打印以前所有分数以及当前分数的分数。
答案 0 :(得分:0)
将值全局存储在App delegate
中只需创建任何类似字符串的var变量,将int作为
var myScores = Int()
现在传递myScores中的值
源ViewController中的将Appdelegate的对象设为如下
let appDelegate = UIApplication.shared.delegate as! AppDelegate
并将值传递为
appDelegate.myScores = your int value
现在可以在destinationController中访问该值
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let myOldScores : Int = appDelegate.myScores
答案 1 :(得分:0)
我认为最好的方法之一就是使用单例类
final class GameDetail {
// MARK: Shared Instance
static let shared = GameDetail()
// Can't init is singleton
private init() { }
// MARK: Local Variable
var score : Int = 0
}
我知道,使用AppDelegate实例作为“全局”单例实例很有吸引力,但不要这样做。如果这是你需要的话,创建特定和单独的单身人士