【发布时间】:2014-07-25 11:55:59
【问题描述】:
我有一个计算器类,第一个 ViewController 插入值,第二个 ViewController 显示计算结果。不幸的是,如果我单击按钮,我会收到一个名为“无法打开 Optional.None”的错误。我知道它的语法有问题,但我不知道如何改进它。
第一个 Viewcontroller 中的按钮在情节提要中设置为“Segue: Show (e.g. Push)”,以便在被点击时切换到 secondViewController。
计算器类类似于:
class Calculator: NSObject {
func calculate (a:Int,b:Int) -> (Int) {
var result = a * b
return (result)
}
}
Viewcontroller 调用该函数,插入 a/b 并想要更改位于 secondviewcontroller 中的标签:
class ViewController: UIViewController {
@IBAction func myButtonPressed(sender : AnyObject) {
showResult()
}
var numberOne = 4
var numberTwo = 7
var myCalc = Calculator()
func showResult () {
var myResult = myCalc.calculate(numberOne, b: numberTwo)
println("myResult is \(String(myResult))")
var myVC = secondViewController()
myVC.setResultLabel(myResult)
}
这里是secondViewController的代码
class secondViewController: UIViewController {
@IBOutlet var myResultLabel : UILabel = nil
func setResultLabel (resultValue:Int) {
myResultLabel.text = String(resultValue)
}
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
【问题讨论】:
-
你有什么问题?
-
UIViewControllers 之间的变化如何? -
谢谢你们,我在第一篇文章中添加了信息。我刚刚意识到我必须创建我的类的一个实例,现在称为“myVC”。不幸的是,我现在收到另一个名为“Can't unwrap Optional.None”的错误。
-
在
showResult()中secondViewController的值从何而来?是全局变量吗?它看起来不像ViewController类中的属性。在调用setResultLabel()之前,您可以使用println()(或调试器)查看它的值吗? -
创建一个自定义初始化并将其传递到那里...?
标签: swift