swift.如何将计算结果传递到另一个屏幕



我是一个敏捷的初学者。在这个项目中,我需要将用户的输入存储到字典中。然后我用这些数据做一些计算。我有一个";计算";按钮时,程序开始计算结果,并将结果传递到另一个屏幕。我被困在这里就是无法通过数据。也许我的";计算";密码请帮忙。


import UIKit
class ViewController: UIViewController {

var student: [String: Int] = [:]

var g : String = ""
var gr : String = ""
var mean : Double = 0.0




@IBOutlet weak var t2: UITextField!

@IBOutlet weak var s1: UILabel!







@IBAction func add(_ sender: UIButton) {


let getInput1 = t1.text!
let getInput2 = Int(t2.text!)


if getInput1 != nil && getInput2! >= 0
{
student[getInput1] = getInput2
s1.text = getInput1


t1.text = nil
t2.text = nil


}else{
s1.text = "None"

}

}

@IBAction func calc(_ sender: Any) {
for (key, value) in student{
theSum = theSum + value
if count == 0
{
maxName = key
min = value
}

count = count + 1




}

mean = Double(theSum)/Double(student.count)

let grade1 = min
switch grade1
{
case 93...100: g = "A"

case 0...59: g = "F"
default: g = ""

}




}
}







override func viewDidLoad() {
super.viewDidLoad()



}

UIViewController 中有一些错误

在中

@IBAction func add(_ sender: UIButton) 

而不是

if getInput1 != nil && getInput2! >= 0

你应该选择

if t1.hasText && t2.hasText && getInput2! >= 0

以及用于将值传递给ResultsViewController

  • 从故事板添加segue并将标识符命名为";SomeID";

  • 然后转到UIViewcontroller类并添加

self.performSegue(withIdentifier: "SomeID", sender: self)

到您的calc函数。

完整代码=https://github.com/alirzaeram/Pass-the-calculation-result

您永远不会调用performSegue(withIdentifier identifier: String, sender: Any?)。我想你想在计算完成后执行segue,对吧?那是你应该调用performSegue的时候。不要忘记在故事板中给你的片段一个ID,并将这个ID作为identifier交给performSegue函数。

有很多方法可以做到这一点,您可以使用UserDefaults

//to save value you can use
UserDefaults.standard.setValue(Any?, forKey: String)
//and to get 
let yourVar = UserDefaults.standard.value(forKey: String)

0r//

class FirstViewController: UIViewController {
var yourCalculation = "your calculation"
var yourResult = 5

override func viewDidLoad() {
super.viewDidLoad()

}
@IBAction func btn(){
let vc = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
vc.yourCalculation = yourCalculation
vc.yourResult = yourResult
self.navigationController?.pushViewController(vc, animated: true)
}

}

//your second viewController
class SecondViewController: UIViewController {
@IBOutlet weak var yourLabel:UILabel!
@IBOutlet weak var yourLabel2:UILabel!
var yourCalculation = String()
var yourResult = Int()

override func viewDidLoad() {
super.viewDidLoad()
self.yourLabel.text = yourCalculation
let yourInt : String = String(yourResult)
self.yourLabel2.text = yourInt
}

}

最新更新