UI —— 计算器

#import <UIKit/UIKit.h>


@interface MyViewController :UIViewController

{

   NSInteger _firstName;

   NSInteger _calculator; // 数字的计数器

   NSInteger _buttonType; // 计算符号计数器

}


@property (nonatomic,retain) UITextField *inputField;


@end







#import "MyViewController.h"


@interface MyViewController ()


@end


@implementation MyViewController


-(void)dealloc

{

    [_inputField release];

    

    [superdealloc];

}


- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view.

    

    //计算器的1 - 10个数字键

   CGRect rect = CGRectMake(40,0, 50, 30);

   for (int i =0; i < 10; i++) {

        rect.origin.y +=50;

       NSString *s = [NSStringstringWithFormat:@"%d", i];

        UIButton *numButton = [UIButtonbuttonWithType:UIButtonTypeCustom];

        [numButtonsetFrame:rect];

        [numButton setBackgroundColor:[UIColorcyanColor]];

        [numButton setTitle:sforState:UIControlStateNormal];

        [self.viewaddSubview:numButton];

        

        [numButton addTarget:selfaction:@selector(buttonClick:)forControlEvents:UIControlEventTouchUpInside];

    }

    

   CGRect textRect = CGRectMake(130, 50, 80, 30);

   _inputField = [[UITextFieldalloc] initWithFrame:textRect];

    [_inputFieldsetKeyboardType:UIKeyboardTypeNamePhonePad];

    [_inputFieldsetBackgroundColor:[UIColorgrayColor]];

    [self.viewaddSubview:_inputField];

    [_inputField release];

    

    textRect.size.width =50;

    textRect.origin.y +=50;

    UIButton *addButton = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];

    [addButtonsetFrame:textRect];

    [addButton setBackgroundColor:[UIColorbrownColor]];

    [addButton setTitle:@"="forState:UIControlStateNormal];

    [self.viewaddSubview:addButton];

    

    [addButton addTarget:selfaction:@selector(buttonEqual:)forControlEvents:UIControlEventTouchUpInside];

    

   for (int j =0; j < 4; j++) {

       NSArray *symbolArray = [NSArrayarrayWithObjects:@"+",@"-", @"*",@"/", nil];

       NSString *symbolString = [symbolArray objectAtIndex:j];

        textRect.origin.y +=50;

        UIButton *symbolButton = [UIButtonbuttonWithType:UIButtonTypeCustom];

        [symbolButtonsetFrame:textRect];

        [symbolButtonsetBackgroundColor:[UIColorgreenColor]];

        [symbolButtonsetTitle:symbolString forState:UIControlStateNormal];

        [self.viewaddSubview:symbolButton];

        [symbolButtonsetTag:j];

        

        [symbolButton addTarget:selfaction:@selector(calculateSymbolButton:)forControlEvents:UIControlEventTouchUpInside];

    }


    textRect.origin.y +=50;

    UIButton *clearButton = [UIButtonbuttonWithType:UIButtonTypeCustom];

    [clearButton setBackgroundColor:[UIColorpurpleColor]];

    [clearButton setTitle:@"C"forState:UIControlStateNormal];

    [clearButtonsetFrame:textRect];

    [self.viewaddSubview:clearButton];

    

    [clearButton addTarget:selfaction:@selector(clearButton:)forControlEvents:UIControlEventTouchUpInside];

}


- (void)buttonClick:(UIButton *)sender

{

   NSString *inputString = nil;

   if (0 == _calculator) {

        inputString = [_inputField.textstringByAppendingString:sender.titleLabel.text];

    }else{

        inputString = sender.titleLabel.text;

    }

    _calculator = 0;

    [_inputFieldsetText:inputString];

}


- (void)calculateSymbolButton:(UIButton *)sender

{

    //此处还有一点小瑕疵,需要在判断一下

    [selfbuttonEqual:nil];

    _firstName = [_inputField.textintegerValue];

    //保存输入的下一个数的形式

    _calculator = 1;

    // 保存计算类型 + - / *(tag更简单一点)

   _buttonType = sender.tag;

}


- (void)clearButton:(UIButton *)sender

{

    _firstName = 0;

    _calculator = 0;

    _buttonType = 0;

    _inputField.text =@"";

}


- (void)buttonEqual:(UIButton *)sender

{

   NSInteger result;

    switch (_buttonType) {

       case 0:

            result =_firstName + [_inputField.textintegerValue];

           break;

            

       case 1:

            result =_firstName - [_inputField.textintegerValue];

           break;

            

       case 2:

            result =_firstName * [_inputField.textintegerValue];

           break;

            

       case 3:

            result =_firstName / [_inputField.textintegerValue];

           break;

            

       default:

           break;

    }

    

   NSString *end = [NSStringstringWithFormat:@"%ld", result];

   _inputField.text = end;

    

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值