我一直在制作简单的GPA计算应用。它从许多文本字段中获取用户输入并进行计算并显示结果。我想在2ndViewController
@IBAction func CalculateGpa(sender: AnyObject){
//all the calculation happen here
//example
let gpa:Float = TotalGiCi/TotalGi
}
我希望将gpa
传递给我的2ndViewController
标签。
所以我做了这样的编码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var ResultViewController : ViewControllerResult = segue.destinationViewController as! ViewControllerResult
ResultViewController.GPAResultLabel = "\(gpa)"
}
然后我收到错误Use of unresolved identifier gpa
我能在这做什么?
我尝试删除@IBAction func CalculateGpa(sender: AnyObject){
并将其替换为override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
,因为sender是anyObject。然后我得到了错误
unrecognized selector sent to instance
答案 0 :(得分:1)
使用var
全局定义变量,因为使用let声明的变量必须立即赋值。您不能简单地使用let和no值来定义变量,就像您在第一行上尝试的那样。
如果要在运行时修改值,这不是常量。因此,您需要一个变量,即使它的值只改变一次。
class viewcontroller:UIViewcontroller{
// Define variable gpa here with its return type...
var gpa:Float?
override func viewDidLoad() {
super.viewDidLoad()
// relevant code
}
@IBAction func CalculateGpa(sender: AnyObject){
gpa = TotalGiCi/TotalGi
}
// Data passing code
答案 1 :(得分:1)
全局变量是在任何函数,方法,闭包或类型上下文之外定义的变量。全局常量和变量总是懒惰地计算
参考下面的代码。我们已经在下面声明了这个变量。
class YourViewControllerName: UIViewController
{
let gpa:Float = TotalGiCi/TotalGi
//OR
var gpa:Float = TotalGiCi/TotalGi
@IBAction func CalculateGpa(sender: AnyObject)
{
//all the calculation happen here
//example
//Do your Calculation here
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
var ResultViewController : ViewControllerResult = segue.destinationViewController as! ViewControllerResult
ResultViewController.GPAResultLabel = "\(gpa)"
}
}