IOS课程笔记[4-5] 计算器实现与更换主题 的使用

news2025/1/11 19:53:07

计算

控件介绍

文本输入

  • 设置键盘格式为NumberPad
  • 字符串与数字转换方法 NSInteger num2 =[str2 integerValue];

弹窗控件

  • UIAlertController 新版本弹窗
 UIAlertController *alert =    [UIAlertController alertControllerWithTitle:@"error" message:@"输入有误" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *action =[UIAlertAction  actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            NSLog(@"取消");       

        }];

        [alert addAction:action];

        [self presentViewController:alert animated:YES completion:nil];

  • UIAlertView IOS9之前版本
   UIAlertView errView = [[UIAlertView alloc] initWithTitle:@"error" message:message delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];

    [errView show]

实现逻辑

  NSLog(@" 点击按钮");

    //达到数字

    NSString *str1=  self.Num1Text.text;

    NSString *str2 = self.Num2Text.text;

    //转为数字

    NSInteger num1 =[str1 integerValue];

    NSInteger num2 =[str2 integerValue];

//校验

    if (num1 ==0 || num2 ==0){

        UIAlertController *alert =    [UIAlertController alertControllerWithTitle:@"error" message:@"输入有误" preferredStyle:UIAlertControllerStyleAlert];

        

        UIAlertAction *action =[UIAlertAction  actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            NSLog(@"取消");

            

        }];

        [alert addAction:action];

        [self presentViewController:alert animated:YES completion:nil];

        return ;

    }

    //相加

    NSInteger result =num1+num2;

    //展示结果

    self.ResultLabel.text =[NSString stringWithFormat:@"%zd",result];

切换 主题

使用控件

  • UISwitch 开关组件
  • UISegmentedControl多选框

基本用法

-addTarget绑定点击或者切换事件

[sc addTarget:self action:@selector(changeThemeBystring:) forControlEvents:UIControlEventValueChanged];

代码实现



-(void) loadTopView{

     

    //添加文本

    UILabel *lb=[[UILabel alloc] init];

    [lb setText:@"更换主题"];

    [lb setFrame:CGRectMake(5, 0, 400, 40)];

     [self.topView addSubview:lb];

    //开关

    UISwitch *sw =[[UISwitch alloc] init];

    [sw setFrame:CGRectMake(200, 0, 200, 40)];

    [sw addTarget:self action:@selector(changeTheme:) forControlEvents:UIControlEventTouchUpInside];

    

    [self.topView addSubview:sw];

    

    

    //多选框

    UISegmentedControl *sc =[[UISegmentedControl alloc] initWithItems:@[@"yellow",@"red",@"green"]] ;

    [sc setFrame:CGRectMake(5, 55, 300, 40)];

    [sc addTarget:self action:@selector(changeThemeBystring:) forControlEvents:UIControlEventValueChanged];

    [self.topView addSubview: sc];

    

    //控件位置

    [self.topView  setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) ];

}

#pragma mark 更换主题

- (void)changeTheme:(UISwitch *)sw{

    if(sw.isOn){

        self.view.backgroundColor= [UIColor whiteColor];

    }else{

        self.view.backgroundColor =[UIColor darkGrayColor];

    }

}

- (void)changeThemeBystring:(UISegmentedControl  *)sg{

    NSLog(@"%@",sg);

    switch  (sg.selectedSegmentIndex){

        case 0:            

            [self changeThemeBycolor:[UIColor yellowColor]];

            break;

        case 1:

            [self changeThemeBycolor:[UIColor redColor]];

            break;

        case 2:

            [self changeThemeBycolor:[UIColor greenColor]];

            break;          

    }

}

##效果展示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成都瀚网科技:抖店怎么快速出体验分?

在当今的移动互联网时代,电商平台之间的竞争日益激烈,用户对产品的体验变得越来越重要。在众多电商平台中,抖音电商成为备受关注的新兴力量。在抖店,如何快速提升店铺体验成为每个卖家关心的问题。 1.如何在抖店快速生成经验值&am…

docker容器内安装项目运行环境(python依赖包+allure)

目录 一、安装自动化项目依赖包1.导出项目依赖库2.上传到远程仓库3.进入jenkins容器内,检查是否安装git4.配置git用户信息5.生成秘钥6.把代码拉取下来7.安装python项目依赖8.运行项目 二、安装allure1.jenkins容器内安装allure,进入/usr/local/2.下载all…

3GPP相关

5G是指特定的、新的5G无线接入技术,在更宽泛的语境中,意指未来移动通信能够支持的、可预见的大量新的应用服务。 3GPP由3个技术规范组(TSG)组成,其中TSG RAN(Radio Access Network,无线接入网&…

网工实验笔记:策略路由PBR的应用场景

一、概述 PBR(Policy-Based Routing,策略路由):PBR使得网络设备不仅能够基于报文的目的IP地址进行数据转发,更能基于其他元素进行数据转发,例如源IP地址、源MAC地址、目的MAC地址、源端口号、目的端口号、…

ubunut搭建aarch64 cuda交叉编译环境记录

背景介绍 在windows环境下安装的VM虚拟机中配置的ubuntu系统,需要编译用于jetson xavier nx平台下可执行的程序,ubuntu 20.04系统为amd64架构,而jetson为arm,或者也叫aarch64架构。嵌入式平台jetson安装到设备中后不具备开发条件,需要在ubuntu系统中构建并编译好在jetson…

linux系统中日志简介

1.linux系统中日志文件类型 主要包括三种: 内核及系统日志 :主要由 系统服务 rsyslog统一管理,根据服务的主配置文件 /etc/rsyslog.conf 中的设置决定 内核和系统程序消息记录的位置。用户日志 : 记录linux系统中用户的登录和退出…

【计算机组成原理】第一章、计算机系统概述

思维导图 1.1计算机发展历程 1.1.1计算机硬件的发展 计算机系统硬件软件 计算机硬件的发展: 第一代:电子管第二代:晶体管第三代:小规模集成电路第四代:大规模集成电路 经历了4代,计算机的速度越来越快&…

GO-实现简单文本格式 文本字体颜色、大小、突出

毫无疑问GO的生态就是一坨大便。老子英文水平小学啊。 实现简单文本格式 文本字体颜色、大小、突出显示等。 创建要给docx文件容器【我估算的】 doc : document.New() defer doc.Close() doc.SaveToFile("simple.docx") 把容器保存为文件 设置标题 创建自然段…

浅谈估值模型:估值幻觉

1:本文是方正证券研报《如何打破“估值幻觉”》【1】的复现研究; 2:本文主要为理念的讲解,模型也是笔者自建,主要数据通过Tushare金融大数据平台接口获取,部分数据通过Wind金融终端获取; 3&am…

wps/word 如何让表格的标题和表格名称文本(表1-1 xxx)跨页显示(已解决)

第一步: 打开wps 创建一个跨页的表格表格,如下图 第二步 大家都知道 表格标题跨页 就是1)在菜单表格工具 点击重复标题 或者 2)表格属性--》行--》在各页顶端以标题行形式出现,详细如下图。 1) 第一…

设计模式:简单工厂模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):

简介: 简单工厂模式,它提供了一个用于创建对象的接口,但具体创建的对象类型可以在运行时决定。这种模式通常用于创建具有共同接口的对象,并且可以根据客户端代码中的参数或配置来选择要创建的具体对象类型。 在简单工厂模式中&am…

DVWA靶场Medium难度部分解析

前言 好久没做题,不想吹牛逼了,消停做点题QAQ Vulnerability: Command Injection 这题不咋难,老Ping题了 输个分号ls试试,没回显即被Ban了,试试别的,例如|或者&& 出了,看看源代码 把…

6.认识Java的API 使用Java函数库

2.1 分析bug SimpleDotCom类中的checkYourself()方法中的for循环有问题 每当玩家猜中某一格时,就将计数器加数,而不管之前是否就已经被猜中。需要一种机制来判别之前是否已经被猜中。 虚拟的行占有7个各自,而DotCom会占有其中连续的3格。下…

win10桌面便签小工具,安全无广告下载哪一款

很多人在日常生活中都有忘记处理事务的情况,偶然的一次两次可能自己就在当时懊恼一下,但是次数多了以后或者是涉及到处理重要的工作任务时,就会给大家带来心里负担及压力。 为避免大家在日常工作中忘记重要的事情,大家可以选择在…

el-table添加fixed属性后底部滚动条添加小手

0 效果 1 样式 /deep/ .el-table--scrollable-x {cursor: pointer; } /deep/ .el-table__empty-block {cursor: auto; } /deep/ .el-table__row {cursor: auto; }

3-k8s-镜像仓库harbor搭建

文章目录 一、概念二、安装harbor三、使用harbor仓库 一、概念 官方概念:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。 我们平时拉去镜像都是从线上仓库拉去,但是企业内部的镜像一般都不会随意传到网上,而是保存在自己公…

Halo-Theme-Hao文档:如何设置导航栏?

本篇文章会教你如何配置导航栏,最终效果参考如下。 感谢 Lanbin、小孙同学 等同学的贡献(语雀参与编辑)。 1标题 进入站点后台 点击左侧面板中的 主题 点击上方的 导航 修改 标题字段即可 2主菜单 主菜单即网站导航栏中间部分的菜单 进入站点…

ChatGPT AIGC 实现多条件求和函数案例

从明细数据中,按多条件进行求和是职场办公应用活动经常要完成的事情。 像这样的需要我们完全可以不用自己动手去查相关函数的应用,让ChatGPT来完成就可以了。 Prompt:有一个Excel表格B3至B483为年份,C3至C483为商品名称,E3至E483为省份,F3至F483为销售额,请写出Excel函…

解惑Android Scoped Storage

原文链接 Android Scoped Storage Puzzles 安卓对于文件存储这块,其实是相当混乱的,在早期的版本中对存储甚至是没有所谓的管理的,有多种方法可以操作文件存储,比如通过Java原生的方式(File/InputStream/OutputStream)&#xff0…

C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例

相关 源码测试用例下载 https://download.csdn.net/download/he_zhidan/88430716 包括4个压缩包,初始代码,实现前缀和,实现前缀积,实现前缀异或。都是在前者的基础上修改的。 本博文是CSDN学院课程的讲义 https://edu.csdn.net/c…