前言

之前做的是TipCalculator,功能实在是太过简单。
期间看了斯坦福大学教iOS10 Swift开发的公开课,正好有讲到计算器的设计例子,于是就想着实现一个,正好iPad Pro上不知道为什么没有原装的计算器app,用自己开发的app岂不是很酷呢?

设计思路

  • 首先我们要知道想要这个app,干什么。很简单,数学计算。
  • 其次,我们需要搭好自己的界面。界面上要放的组件很简单,一堆规律排放的按钮:UIButton,以及一个结果显示条:UILabel。
  • 对于计算器上的按钮,我们需要它做的就是得到它对应的值或运算符。
  • 而UILabel,当然就是显示运算过程以及结果啦。

Step by Step

首先我们让按钮来传值:

  • 对于每一个button,control+drag,连接到controller,(嫌一个个连太麻烦?直接连第一个button,然后其他的都copy就好啦)
    然后写一个方法,就叫它为SendDigit,不多说,来看具体代码:
 @IBAction func SendDigit(_ sender: UIButton) {
        let digit = sender.currentTitle!
          print(digit + " is clicked")
}

在听课的过程中,也弄明白了为什么要在text后面加一个!,因为button上面的值是optional的,button上的值可能是empty的,而!就是为了得到它的值并传给digit,表示默认为非nil,直接解包(unwrap)进行处理。
否则就会出现 (optional)7 is clicked 的情况。

好的,现在我们已经成功实现button传值了。

将点击button的值显示在UILabel上。

@IBOutlet weak var showResult: UILabel!
@IBAction func SendDigit(_ sender: UIButton) {
        let digit = sender.currentTitle!
          showResult.text! = digit
}

这里对showResult.text后添加!也是与上面同理

好了,现在运行,测试,可以显示了!

可是,每次只能显示一个button的数字,那要输两位数以上该怎么办呢?

那就,这样?

let textCurrently = showResult.text!
showResult.text! = textCurrently + digit

可以输入两位数了!
但是,每次输的时候,会把前面默认的0带上,这样显然是不正确的。
于是,我们就可以想一种方法来让程序判断,用户是否正在输入。
设一bool 变量,初始设为false,如果正在输入,就让 按的button传的数字跟在Label上的数字后面。如果不是,就替换更新Label上的数字。

实现常量显示

接下来,尝试着添加特殊常数button,点击button,即显示该常数值内容。
原理很简单,同样是send digit。

--- 持续更新 ---

本文固定链接: http://www.js-code.com/ios/ios_52828.html