2014-09-28 113 views
-1

这是我的计算器代码,现在我只能连续打等号前加2号,我想要,我可以添加更多超过两个数字之前击中等于按钮。 (斯威夫特书面)如何编写一个计算器,增加,数字连续(SWIFT)

import UIKit 

class CalcControl: UIView { 
var firstEntry = "" 
var isUserInMiddleOfTypingNumbers:Bool? 
var didUserPressedOperation:Bool? 
var op:String? 


@IBOutlet var displayLabel: UILabel! 

@IBAction func digitPressed(sender: UIButton) { 
    if (didUserPressedOperation == nil) { 
     //displayLabel.text = "" 
     didUserPressedOperation = nil 
    } 

    if (isUserInMiddleOfTypingNumbers == nil) { 
     displayLabel.text = displayLabel.text! + sender.currentTitle! 
    } else { 
     displayLabel.text = sender.currentTitle 
     isUserInMiddleOfTypingNumbers = true 
    } 
     } 

@IBAction func operationPressed(sender: UIButton) { 
    op = sender.currentTitle 
    firstEntry = displayLabel.text! 
    didUserPressedOperation = true 
    displayLabel.text = "" 


} 

@IBAction func clearPressed(sender: UIButton) { 
    self.clear() 
} 

func clear() { 
    firstEntry = "" 
    isUserInMiddleOfTypingNumbers = nil 
    didUserPressedOperation = nil 
    displayLabel.text = "" 
} 


@IBAction func equalPressed(sender: UIButton) { 
    var secondEntry:NSString = displayLabel.text! 
    println((firstEntry)) 
    println((secondEntry)) 

    if(op == "+") { 
     displayLabel.text = (((firstEntry as NSString!).doubleValue + (secondEntry as NSString).doubleValue) as NSNumber).stringValue 
    } else if(op == "-") { 
     displayLabel.text = (((firstEntry as NSString!).doubleValue - (secondEntry as NSString).doubleValue) as NSNumber).stringValue 
    } else if(op == "x") { 
     displayLabel.text = (((firstEntry as NSString!).doubleValue * (secondEntry as NSString).doubleValue) as NSNumber).stringValue 
    } else if(op == "/") { 
     displayLabel.text = (((firstEntry as NSString!).doubleValue/(secondEntry as NSString).doubleValue) as NSNumber).stringValue 
    } 


    firstEntry = "" 
    isUserInMiddleOfTypingNumbers = nil 
    didUserPressedOperation = nil 
} 

    } 
+0

将旧结果保存在一个实例变量中,并继续添加到它...你基本上已经做了,但总是将你的firstEntry重置为标签文本 – 2014-09-28 22:51:36

回答

1

我会调整自己的逻辑,这样:

  1. 有一个IB行动,所有的操作键(+, - ,x,/)是绑。在任何时候启动IB动作时,有两种选择:a)准备输入另一个数字;或b)前一个键序列是一个数字,后跟一个操作符,并且该按钮与Enter相同。

  2. IB删除键的动作。作用明显。

  3. Enter键的IB动作。