2014-09-28 72 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動作。