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