我有一个计算器类、第一个 ViewController 用于输入值,第二个 ViewController 用于显示计算结果。不幸的是,如果我点击按钮,会出现一个名为 "Can't unwrap Optional.None" 的错误。我知道这与语法有关,但我不知道如何改进它。
在 storyboard 中,第一个 ViewController 中的按钮设置为 "Segue: Show (e.g. Push)",以便在点击后切换到第二个 ViewController。
计算器类大致如下:
视图控制器调用函数,插入a/b并希望更改位于第二个视图控制器中的标签:
这是第二个视图控制器的代码。
在 storyboard 中,第一个 ViewController 中的按钮设置为 "Segue: Show (e.g. Push)",以便在点击后切换到第二个 ViewController。
计算器类大致如下:
class Calculator: NSObject {
func calculate (a:Int,b:Int) -> (Int) {
var result = a * b
return (result)
}
}
视图控制器调用函数,插入a/b并希望更改位于第二个视图控制器中的标签:
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)
}
这是第二个视图控制器的代码。
class secondViewController: UIViewController {
@IBOutlet var myResultLabel : UILabel = nil
func setResultLabel (resultValue:Int) {
myResultLabel.text = String(resultValue)
}
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
UIViewController
之间进行切换的? - 67cherriesshowResult()
方法中,secondViewController
的值是从哪里来的?它是一个全局变量吗?它看起来不像是你的ViewController
类中的属性。你能使用println()
(或调试器)在调用setResultLabel()
之前查看它的值吗? - GoZoner