我正在为我的学校的一个大项目创建一个ios的测验应用程序,但这是我第一次使用xcode和swift创建一些东西。我遇到了一个我似乎无法自己解决的问题。目前我正试图在多个ViewControllers中保持得分;我尝试了很多不同的东西,但它仍然无效。 就像我说的那样,我是xcode的菜鸟,实际上都是编码。
首先,我有得分代码:
@IBOutlet weak var scoreLabel: UILabel!
var score = 0
在我的应用中,当有人回答正确的问题时,得分为1分(score += 1
)。在第一个主题的4个问题之后,在不同的ViewController上显示了4个不同主题的问题。
这是我在第一个ViewController末尾的代码(MultipleChoice 2是我的第二个vc):
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is MultipleChoice2 {
let vc = segue.destination as? MultipleChoice2
vc?.score = score
}
}
我的第二个vc的代码:
var score = Int()
@IBOutlet weak var scoreLabel: UILabel?
override func viewDidLoad() {
super.viewDidLoad()
scoreLabel?.text = String(score)
}
我可能做错了,但我希望应用程序将我的第一个ViewController的分数保存到第二个,这样,当有人在第一个vc中获得3分时,他仍然在第二个中获得3分VC。
我尝试过的其他内容根本不起作用,但是在使用此代码后,我在AppDelegate类中收到消息Thread 1:signal SIGABRT,然后单击发送给第二个viewcontroller的按钮。
老实说,我不知道如何将我的分数保存到下一个vc,如果有人有解决方案,这将是很好的..
答案 0 :(得分:0)
检查所有插座是否已连接。之后检查segue是否已连接。
更改
var score = Int()
到
var score: Int = 0
在secondVC中再试一次。
答案 1 :(得分:0)
如果您在使用它时遇到任何问题,请尝试关注并告知我们: 首先将secondVC中得分变量的声明更改为
var score : Int = 0
然后在准备segue方法时你可以试试这些: 首先从故事板中设置segue标识符,因为它更方便使用: 那么你可以通过
检查我们是否处于适当的状态if segue.identifier == "showSecondVC" {
let vc = segue.destination as! MultipleChoice2
vc.score = score
}
还使用断点检查一切是否正常执行 还有一件事是您可以使用以下代码设置标签文本:
scoreLabel?.text = "\(score)"
答案 2 :(得分:0)
var score = Int()
更改为var score: Int?
。在第一个视图控制器中修改segue方法,如下所示
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showSecondVC" {
let vc = segue.destination as! MultipleChoice2
vc.score? = score
}
}