iOS——实现简单计算器

记录一下最近写的一个计算器APP。

实现包含括号以及四则运算的简单计算器,利用MVC设计模式以及Masonry布局。
实现界面:
在这里插入图片描述
首先实现这个界面到了之前学过的Masonry第三方库,对按钮进行了屏幕比例的限制。

遇见的一些问题

在MVC设计模式中Button事件的处理

根据MVC的设计模式,Button事件应该加在C的代码中,这里一开始没有好的思路,后来问了下学长,学了一手。、
我们可以利用协议传值,在V的代码中添加事件,但事件函数是在C中实现的,每次点击Button时,C可以得到Button的tag值,以进行下一步处理。
部分代码:

//  View.h
//  计算器
//
//  Created by 差不多先生 on 2021/10/6.
//

#import <UIKit/UIKit.h>

@protocol viewDelegate <NSObject>

- (void) pressChange: (UIButton*) cButton;

@end
[_zeroButton addTarget:self action:@selector(return:) forControlEvents:UIControlEventTouchUpInside];

- (void) return: (UIButton*) cButton {
   
    [_delegate pressChange:cButton];
}

// 在c中实现的pressChange:方法

// 记录小数点状态
int flag = 0;
// 防止连续输入符号
int secondFlag = 0;
// 记录等于号状态
int thirdFlag = 0;
// 防止连续输入zero
int zeroFlag = 0;
- (void) pressChange: (UIButton*) cButton {
   
    if (cButton.tag == 101) {
   
        [_changeArray removeAllObjects];
        NSString *ansString = @"0";
        _firstView.topLabel.text = ansString;
        flag = 0;
        secondFlag = 0;
        thirdFlag = 0;
    } else if (cButton.tag == 120) {
   
        if (thirdFlag == 1) {
   
            ;
        } else {
   
            [_changeArray addObject:@"#"];
            NSString *ansString = [_changeArray componentsJoinedByString:@""];
//            NSLog(@"%@", ansString);
            [_firstModel operation:ansString];
            _firstView.topLabel.text = [_firstModel operation:ansString];;
            [_changeArray removeAllObjects];
            thirdFlag = 1;
        }
        
    } else if (cButton.tag == 119) {
       //控制小数点输入合理
        if (flag == 0) {
   
            flag = 1;
            [
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值