代码如下:
#import “ViewController.h”
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(IBAction)showMessage
{
UIAlertView *helloWorldAlert = [[UIAlertView alloc] initWithTitle:@“My First App” message:@“Hello, World!” delegate:nil cancelButtonTitle:@“OK” otherButtonTitles:nil];
// Display the Hello World Message
[helloWorldAlert show];
}
@end
注:在Outlet关联构建好以后,View Controller类中会新增加一行@IBOutlet声明:
Class ViewController:{
@IBOutlet weak var labelResult: UILabel;
…
在编译项目代码时,Swif编译器不会对@IBOutlet声明做任何特别的事情。@IBOutlet唯一的目的就是告诉Xcode这个属性会连接故事板或nib文件中的一个视图对象。也就是说,任何想要指向故事板或nib文件的属性必须被声明为@IBOutlet。
3、ViewController类建立Action关联
代码如下:
class ViewController:UIViewController(
@IBOutlet weak var labelResult:UILabel!
var firstOperand: Double =0.0
var secondOperand: Double =0.0
var decimalPointFlag: Bool =false
var isSecond: Bool =false
var operatorFlag: String =“ ”
将Connection 设置为Action的方法同步骤1。设置好后点击“connect”按钮。
在Outlet关联构建好以后,ViewController类中会新增加一行@IBOutlet声明:
Override func didReceiveMemoryWarning(){
Super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
在创建好Action以后,ViewController.swift文件应该如下面这样:
Import UIKit
Class ViewController:UIViewController{
@IBOutlet weak var labelResult:UILabel!
… …
@IBAction func buttonTap(sender:UIButton){
}
}
按照上述设置1~9按钮;
在编辑器的右侧窗口中编辑ViewController.swift文件,找到button Tap方法并在该方法中添加下面的代码:
@IBAction func buttonTap(sender:UIButton){
//labelResult中默认是0,如果开始输入数字,则先清除0
If labelResult.text == “0” || (isSecond && secondOperand == 0.0){
labelResult.text = “”
}
//将用户录入的数据添加到labelResult中
//labelResult.text = labelResult.text + sender.titleLabel
If let value = sender.titleLabel?.text{
labelResult.text = labelResult.text! + value
}
If isSecond {
secondOperand = (labelResult.text! as NSString).doubleValue
}else{
//将labelResult中的字符串转化为单精度数
firstOperand = (labelResult.text! as NSString).doubleValue
}
//在控制台中输出转换完的数值
printIn(firstOperand)
在ViewController.swift文件中添加下面关于小数点的程序代码:
Class ViewController:UIViewController{
@IBOutlet weak var labelResult:UILabel!
… …
if ifSecond{
secondOperand = (labelResult.text! As NSString).doubleValue
}else{
firstOperand = (labelResult.text! As NSString).doubleValue
}
decimalPOintFlag = !decimalPointFlag
}
}
}
实现计算器运算符相关代码:
//修改ViewController类中的button Tap
@IBAction func buttonTap(sender:UIButton){
//labelResult中默认显示0,如果开始输入数字,则先清除0
If labelResult.text == “0” || (isSecond && secondOperand == 0.0){
labelResult.text = “”
}
//将用户录入的数添加到labelResult中
labelResult.text = labelResult.text! + sender.titleLabel!.text!
If isSecond{
secondOperand = NSString(string : labelResult.text!).doubleValue
}
}
//修改ViewController类中的decimalPointTap
@IBAction func decimalPointTap(){
//如果没有小数点输入则执行下面的操作
if !decimalPointFlag{
labelResult.text = labelResult.text! + “.”
if isSecond {
secondOperand = NSString(string : labelResult.text!).doubelValue
}else{
firstOperand = NSString(string : labelResult.text!).doubelValue
}
decimalPointFlag = !decimalPointFlag
}
}
//为operatorTap方法添加下面的代码
@IBAction func operatorTap (sender : UIButton){
if firstOperand !=0 {
isSecond = true
decimalPointFlag = false
Switch sender.titleLabel!.text!{
case “+”:
operatorFlag = “+”
case “-”:
operatorFlag = “-”
case “x”:
operatorFlag = “*”
case “/”:
operatorFlag = “/”
defaul:
operatorFlag = “ ”
}
}
}
实现计算结果相关代码
//resultTap方法
@IBAction func resultTAp(){
//确保第二操作数有值
If isSecond {
//除数不能为 0
If oeratorFlag == “/” && secondOperand == 0{
println(“Error : 除数不能为0.”)
return
}
var result: Double = 0.0
switch operatorFlag {
case “+”:
result = firstOperand + secondOperand
case “-”:
result = firstOperand - secondOperand
case “x”:
result = firstOperand * secondOperand
case “/”:
result = firstOperand / secondOperand
defaul:
result = 0.0
}
labelResult.text = result.description
println(“第一操作数:(firstOperand)”)
println(“操作符:(opratorFlag)”)
println(“第二操作数:(secondOperand)”)
println(“结果:(result)”)
}
}
//clear方法
@IBAction func clear(){
labelResult.text = “0” //Label对象显示0
firstOperand = 0.0 //第一操作数清零
secondOperand = 0.0 //第二操作数清零
decimalPointFlag = false //小数点标记设置为假
isSecond = false //第二操作数标记设置为假
operatorFlag = “ ” // 操作符清空
}