일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 패캠챌린지
- 직장인공부
- 환급챌린지
- 파이썬
- 오공완
- 패스트캠퍼스
- reactnative강의
- 패캠reactnative
- 패캠
- 자바
- 30개프로젝트로배우는iOS앱개발withSwift초격차패키지Online.
- 코딩교육
- 수강료0원챌린지
- 패캠인강후기
- 직장인인강
- 패스트캠퍼스후기
- 코딩자격증
- 패캠강의후기
- fastcampus
- 코딩테스트
- 직정인자기계발
- 직장인자기계발
- 자바스크립트
- Today
- Total
라티의 작은 일기장
[30일차] [계산기 앱] 계산기 앱 기능 구현 part.1 본문
드디어 챌린지 마지막 날이다...! 오늘은 계산기 앱의 기능 구현을 할 것이다...!
오늘 구현할 기능은 숫자 키패드를 통해 입력하는 숫자를 표시하는 것과, AC 버튼의 입력값 초기화 기능이다.
나머지는 꼭 내일까지 마무리 할거다!
그러기 위해서, 메인 VC의 Assistant를 켜주고, 숫자 Label의 Outlet 변수 numberOutputLabel을 선언해주자!
그리고 숫자 버튼에 대한 Action 함수를 선언해줄건데, 10개의 숫자 버튼이 있으니까 10개의 Action함수!!!! ...가 아니라
일단 하나의 Action 함수를 선언하고, 나머지 버튼에 대해서도 동작하도록 대응 작업을 해주려고 한다.
일단 '7' 버튼에 대해 Action 함수 tapNumberButton()을 선언해주자.
그리고 나머지 숫자 버튼들도 우클릭 드래그로 해당 Action 함수에 등록시켜주자.
그리고 다음 버튼들에 대해 Action 함수를 선언해주자.
- AC 버튼 : tapClearButton()
- . 버튼 : tapDotButton()
- 나누기 버튼 : tapDivideButton()
- 곱하기 버튼 : tapMultiplyButton()
- 빼기 버튼 : tapSubtractButton()
- 더하기 버튼 : tapAddButton()
- 등호 버튼 : tapEqualButton()
전부 선언했다면 추후 연산 기능 구현을 위한 열거형 Operation을 선언해주자.
enum Operation {
case Add
case Subtract
case Divide
case Multiply
case unknown
}
여기서 unknown case는 연산자가 선택되지 않은 상황을 다루기 위한 것이다.
다음은 클래스 내 프로퍼티들을 선언해보자.
var displayNumber = "" // Label에 표시되는 숫자를 저장
var firstOperand = "" // 첫번째 피연산자
var secondOperand = "" // 두번째 피연산자
var result = "" // 계산 결괏값
var currentOperation: Operation = .unknown // 현재 선택된 연산자
그러면 이제 선언한 Action 함수들을 구현할 준비가 끝난 것이다.
tapNumberButton() 부터 시작해보자.
@IBAction func tapNumberButton(_ sender: UIButton) {
guard let numberValue = sender.title(for: .normal) else { return }
if self.displayNumber.count < 9 {
self.displayNumber += numberValue
self.numberOutputLabel.text = self.displayNumber
}
눌러진 버튼의 title 값을 옵셔널 바인딩을 통해 저장하고 화면에 표시하되, 9자리가 넘지 않도록 구현하였다.
다음은 tapDotButton()이다.
@IBAction func tapDotButton(_ sender: UIButton) {
if self.displayNumber.count < 8, !self.displayNumber.contains(".") {
self.displayNumber += self.displayNumber.isEmpty ? "0." : "."
self.numberOutputLabel.text = self.displayNumber
}
}
소숫점을 포함해서 9자리까지 표시하도록 하고, 표시하고 있는 숫자에 이미 .이 있는 경우에는 .을 추가하지 않도록 구현하였다.
마지막으로 tapClearButton()이다.
@IBAction func tapClearButton(_ sender: UIButton) {
self.displayNumber = ""
self.firstOperand = ""
self.secondOperand = ""
self.result = ""
self.currentOperation = .unknown
self.numberOutputLabel.text = "0"
}
AC 버튼의 기능은 사실상 앱을 처음 시작했을 때의 상태로 만들어 주는 것과 같다.
따라서 모든 프로퍼티를 초기화해주고, 표시되는 숫자를 0으로 변경해주면 구현이 끝난다.
이제 앱을 빌드해서 결과를 확인해보자.
구현한 기능은 일단 모두 작동하는 것을 확인할 수 있다!
그런데 0을 연속으로 입력하면 00000 처럼 입력되는 문제가 있다.
이건 어떻게 해결해야 하나..?
패스트캠퍼스 바로가기 : http://bit.ly/3Y34pE0
> 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Swift' 카테고리의 다른 글
[29일차] [계산기 앱] 계산기 앱 UI 그리기 part.2 & part.3 (0) | 2023.03.20 |
---|---|
[28일차] [계산기 앱] 계산기 UI 그리기 part.1 (0) | 2023.03.19 |
[27일차] [계산기 앱] 앱 요구사항 & UIStackView 알아보기 (0) | 2023.03.18 |
[26일차] [LED 전광판 앱] 기능 구현하기 part.2 (0) | 2023.03.17 |
[25일차] [LED 전광판 앱] 기능 구현하기 part.1 (0) | 2023.03.16 |