2015-07-11 153 views
0

我一直在制作简单的GPA计算应用程序。它需要用户输入从大量的文本字段,并做了计算和显示result.i希望显示结果2ndViewController在两个视图控制器之间传递数据Swift IOS

@IBAction func CalculateGpa(sender: AnyObject){ 
//all the calculation happen here 
//example 
     let gpa:Float = TotalGiCi/TotalGi 

} 

,我想传递gpa2ndViewController标签。 ,所以我做了这样的

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

定义GPA全球 –

+0

@Bhavin我不喜欢这一点,在全球认定中 –

+0

使用VAR反而让的在@IBAction之前,我定义了这样的全局'let gpa:Float'和inside @IBAction'gpa = TotalGiCi/TotalGi'我做对了吗? –

回答

1

var定义全球的变量,因为与让利声明的变量必须立即被分配一个值。你不能简单地定义一个变量,让你在第一行尝试去做和没有值。

如果您在运行时修改了值,这不是常数。因此,即使其值只更改一次,您也需要一个变量。

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 
+0

明白了。为什么在这里得到这个错误'ResultViewController.GPAResultLabel =“\(gpa)”' '不能将float类型的值赋值给类型为UIlabel的值 –

+0

ohhh ....对不起....你需要给一个文本属性来标签....就像label.text ...并且还将float转换为字符串 –

1

全局变量是任何功能,方法,封闭件,或类型context.Global常数之外定义和变量都是延迟计算

请参考下面code.We具有声明变量变量如下所示。

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)" 
    } 
} 
相关问题