首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Swift中制作计算器

制作一个简单的计算器应用是一个很好的Swift和iOS开发入门项目。以下是一个详细的步骤指南,帮助你创建一个基本的计算器应用。

1. 创建一个新的Xcode项目

  1. 打开Xcode。
  2. 选择 "Create a new Xcode project"。
  3. 选择 "App" 并点击 "Next"。
  4. 输入项目名称(例如 "Calculator"),选择 "Swift" 作为编程语言,确保 "User Interface" 选择 "Storyboard"。
  5. 选择保存位置并点击 "Create"。

2. 设计用户界面

Main.storyboard 中设计计算器的用户界面。你可以使用按钮、标签和堆栈视图来布局计算器。

  1. 打开 Main.storyboard
  2. 拖动一个 UILabel 到视图控制器顶部,用于显示结果。
  3. 使用 UIButton 创建数字按钮(0-9)和操作按钮(+、-、*、/、=、C)。
  4. 使用 UIStackView 来组织按钮,使其布局整齐。

3. 创建视图控制器

ViewController.swift 中实现计算器的逻辑。

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var displayLabel: UILabel!
    
    private var isFinishedTypingNumber: Bool = true
    private var currentValue: Double {
        get {
            guard let number = Double(displayLabel.text!) else {
                fatalError("Cannot convert display label text to a Double.")
            }
            return number
        }
        set {
            displayLabel.text = String(newValue)
        }
    }
    
    private var firstNumber: Double = 0
    private var operation: String = ""
    
    @IBAction func numberPressed(_ sender: UIButton) {
        if let numberValue = sender.currentTitle {
            if isFinishedTypingNumber {
                displayLabel.text = numberValue
                isFinishedTypingNumber = false
            } else {
                displayLabel.text = displayLabel.text! + numberValue
            }
        }
    }
    
    @IBAction func operationPressed(_ sender: UIButton) {
        isFinishedTypingNumber = true
        firstNumber = currentValue
        if let operationValue = sender.currentTitle {
            operation = operationValue
        }
    }
    
    @IBAction func equalsPressed(_ sender: UIButton) {
        isFinishedTypingNumber = true
        let secondNumber = currentValue
        
        var result: Double = 0
        
        switch operation {
        case "+":
            result = firstNumber + secondNumber
        case "-":
            result = firstNumber - secondNumber
        case "*":
            result = firstNumber * secondNumber
        case "/":
            result = firstNumber / secondNumber
        default:
            fatalError("The operation passed in does not match any of the cases.")
        }
        
        currentValue = result
    }
    
    @IBAction func clearPressed(_ sender: UIButton) {
        displayLabel.text = "0"
        isFinishedTypingNumber = true
        firstNumber = 0
        operation = ""
    }
}

4. 连接UI元素和代码

  1. 打开 Main.storyboard
  2. 选择视图控制器并打开 "Assistant Editor"(双窗口模式)。
  3. 确保右侧窗口显示 ViewController.swift
  4. 按住 Control 键并从 UILabel 拖动到 ViewController.swift,创建一个 IBOutlet,命名为 displayLabel
  5. 按住 Control 键并从每个数字按钮拖动到 ViewController.swift,创建一个 IBAction,命名为 numberPressed
  6. 按住 Control 键并从每个操作按钮(+、-、*、/)拖动到 ViewController.swift,创建一个 IBAction,命名为 operationPressed
  7. 按住 Control 键并从等号按钮(=)拖动到 ViewController.swift,创建一个 IBAction,命名为 equalsPressed
  8. 按住 Control 键并从清除按钮(C)拖动到 ViewController.swift,创建一个 IBAction,命名为 clearPressed

5. 运行应用

  1. 选择一个模拟器或连接一个物理设备。
  2. 点击 Xcode 顶部的 "Run" 按钮(或按 Cmd + R)。
  3. 你的计算器应用应该在模拟器或设备上运行。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共22个视频
JavaWeb阶段入门教程-EL表达式+JSP【动力节点】
动力节点Java培训
通过本课程的学习,使大家掌握JSP开发,充分认知JSP在实际项目开发中的重要作用。 jsp从表现上看更像是前端组件,只是传统的html代码加入了java脚本的综合操作。但是在本质上,jsp同时又是servlet。
共39个视频
动力节点-Spring框架源码解析视频教程-上
动力节点Java培训
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
共0个视频
动力节点-Spring框架源码解析视频教程-
动力节点Java培训
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
共0个视频
动力节点-Spring框架源码解析视频教程-下
动力节点Java培训
本套Java视频教程主要讲解了Spring4在SSM框架中的使用及运用方式。本套Java视频教程内容涵盖了实际工作中可能用到的几乎所有知识点。为以后的学习打下坚实的基础。
共29个视频
【动力节点】JDBC核心技术精讲视频教程-jdbc基础教程
动力节点Java培训
本套视频教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。
共17个视频
动力节点-JDK动态代理(AOP)使用及实现原理分析
动力节点Java培训
动态代理是使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中增强自己的功能代码。
共45个视频
2022全新MyBatis框架教程-循序渐进,深入浅出(上)
动力节点Java培训
通过本课程的学习,可以在最短的时间内学会使用持久层框架MyBatis,在该视频中没有废话,都是干货,该视频的讲解不是学术性研究,项目中用什么,这里就讲什么,如果您现在项目中马上要使用MyBatis框架,那么您只需要花费3天的时间,就可以顺利的使用MyBatis开发了。
共0个视频
2022全新MyBatis框架教程-循序渐进,深入浅出(
动力节点Java培训
通过本课程的学习,可以在最短的时间内学会使用持久层框架MyBatis,在该视频中没有废话,都是干货,该视频的讲解不是学术性研究,项目中用什么,这里就讲什么,如果您现在项目中马上要使用MyBatis框架,那么您只需要花费3天的时间,就可以顺利的使用MyBatis开发了。
共0个视频
2022全新MyBatis框架教程-循序渐进,深入浅出(下)
动力节点Java培训
通过本课程的学习,可以在最短的时间内学会使用持久层框架MyBatis,在该视频中没有废话,都是干货,该视频的讲解不是学术性研究,项目中用什么,这里就讲什么,如果您现在项目中马上要使用MyBatis框架,那么您只需要花费3天的时间,就可以顺利的使用MyBatis开发了。
共26个视频
【少儿Scratch3.0编程】0基础入门
小彭同学
“控制电脑,而不是被电脑控制”。AI时代,编程成为全球STEM教育小学阶段的最大热点和趋势,以美国为首的发达国家,都在推崇全民编程。在中国,编程等信息类课程的推广已经蔚然成风。2017年教育部印发的《义务教学小学科学课程标准》中,特别把STEM教育列为新课程标准的重要内容之一;
共32个视频
动力节点-Maven基础篇之Maven实战入门
动力节点Java培训
Maven这个单词的本意是:专家,内行,读音是['meɪv(ə)n]或['mevn]。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
共49个视频
动力节点-MyBatis框架入门到实战教程
动力节点Java培训
Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
共69个视频
《腾讯云AI绘画-StableDiffusion图像生成》
学习中心
人工智能正在加速渗透到千行百业与大众生活中,个体、企业该如何面对新一轮的AI技术浪潮?为了进一步帮助用户了解和使用腾讯云AI系列产品,腾讯云AI技术专家与传智教育人工智能学科高级技术专家正在联合打造《腾讯云AI绘画-StableDiffusion图像生成》训练营,训练营将通过8小时的学习带你玩转AI绘画。并配有专属社群答疑,助教全程陪伴,在AI时代,助你轻松上手人工智能,快速培养AI开发思维。
领券