Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将数据(分数)从第一个viewcontroller保存到第二个viewcontroller?_Ios_Swift_Uiviewcontroller_Sigabrt - Fatal编程技术网

Ios 如何将数据(分数)从第一个viewcontroller保存到第二个viewcontroller?

Ios 如何将数据(分数)从第一个viewcontroller保存到第二个viewcontroller?,ios,swift,uiviewcontroller,sigabrt,Ios,Swift,Uiviewcontroller,Sigabrt,我正在为学校的一个大项目为ios创建一个测验应用程序,但这是我第一次用xcode和swift制作一些东西。我遇到了一个自己似乎无法解决的问题。目前,我正试图在多个ViewController之间保持分数;我试过很多不同的东西,但还是不起作用。 正如我所说,我是xcode的noob,实际上是所有的编码 首先,我有分数的代码: @IBOutlet weak var scoreLabel: UILabel!

我正在为学校的一个大项目为ios创建一个测验应用程序,但这是我第一次用xcode和swift制作一些东西。我遇到了一个自己似乎无法解决的问题。目前,我正试图在多个ViewController之间保持分数;我试过很多不同的东西,但还是不起作用。 正如我所说,我是xcode的noob,实际上是所有的编码

首先,我有分数的代码:

@IBOutlet weak var scoreLabel: UILabel!                                                                   
var score = 0
在我的应用程序中,当有人回答正确的问题时,分数会得到1分(
score+=1
)。在第一个主题的4个问题之后,将在不同的ViewController上显示不同主题的4个问题

这是我在第一个ViewController末尾的代码(MultipleChice 2是我的第二个vc):

我的第二个vc代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.destination is MultipleChoice2 {
        let vc = segue.destination as? MultipleChoice2
        vc?.score = score
    }
}
var score = Int()

@IBOutlet weak var scoreLabel: UILabel?

override func viewDidLoad() {
    super.viewDidLoad()
    scoreLabel?.text = String(score)
}
我可能做错了,但我希望应用程序能将分数从我的第一个ViewController保存到我的第二个ViewController,这样,当某人在第一个vc中得了3分时,他在第二个vc中仍然得了3分

我尝试过的其他方法根本不起作用,但通过这段代码,我在类AppDelegate中单击将我发送到第二个viewcontroller的按钮后得到消息Thread 1:signal SIGABRT


老实说,我不知道如何将我的分数保存到下一个vc,如果有人能解决这个问题,那就太好了。

检查所有插座是否都连接好。然后检查segue是否已连接

改变

var score = Int()


在secondVC中,然后重试。

请尝试以下操作,如果您在使用时遇到任何问题,请告诉我: 首先,将secondVC中分数变量的声明更改为

var score : Int = 0
然后在“准备分段”方法中,您可以尝试以下方法: 首先从故事板中设置segue标识符,因为它更便于使用: 然后你可以通过以下方式检查我们的状况是否正常

if segue.identifier == "showSecondVC" {
    let vc = segue.destination as! MultipleChoice2
    vc.score = score
}
还可以使用断点检查是否所有操作都正常执行 另外,您还可以使用以下代码设置标签文本:

scoreLabel?.text = "\(score)"
  • 在第二视图控制器中将
    var score=Int()
    更改为
    var score:Int?
  • 将序列标识符设置为情节提要中的第二个视图控制器
  • 在first view controller中修改segue方法,如下所示

    override func prepare(对于segue:UIStoryboardSegue,发送方:Any?){
    如果segue.identifier==“showSecondVC”{
    设vc=segue.destination为!MultipleChoice2
    分数
    }
    }
    


  • 确保您的插座已连接到第二个VC上。
    scoreLabel?.text = "\(score)"
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showSecondVC" {
            let vc = segue.destination as! MultipleChoice2
            vc.score? = score
        }
    }