在两个视图控制器之间传递数据Swift IOS
我一直在制作简单的GPA计算应用程序。它需要用户输入从大量的文本字段,并做了计算和显示result.i希望显示结果2ndViewController
在两个视图控制器之间传递数据Swift IOS
@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
与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
明白了。为什么在这里得到这个错误'ResultViewController.GPAResultLabel =“\(gpa)”' '不能将float类型的值赋值给类型为UIlabel的值 –
ohhh ....对不起....你需要给一个文本属性来标签....就像label.text ...并且还将float转换为字符串 –
全局变量是任何功能,方法,封闭件,或类型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)"
}
}
定义GPA全球 –
@Bhavin我不喜欢这一点,在全球认定中 –
使用VAR反而让的在@IBAction之前,我定义了这样的全局'let gpa:Float'和inside @IBAction'gpa = TotalGiCi/TotalGi'我做对了吗? –