[ios/Objective-C] Objective-C로 화씨->섭씨로 변환하는 간단한 앱 구현하기

seb Incode·2023년 6월 30일
0
post-thumbnail

포스팅에 앞서..

회사 특정 상 Objective-C로 아이폰 운영을 할 줄 알아야하는 상황이다.
2012, 2013년도에 출간된 책이 그나마 최신일뿐만 아니라 구글링을 해봐도 따라하면서 배울 수 있는 꾸준한 포스팅을 못 찾았다 ㅠㅠ
그래서 회사 선배들이 사셨던 Obj-C iOS 책들을 두 세권(알라딘 중고로 구함..) 사서 세 개를 돌려보면서 포스팅을 올릴 예정이다.
복습용이라서 부정확한 용어 사용했을 수도 있으니까 참고만 해주세여

File -> New -> Project...를 누름
App 개발 할 사람 : "iOS" - "App" 선택
Objective-C 연습 할 사람 : "macOS" - "App" 선택

난 App개발

Product Name : 마음대로
Organization identifer : 대부분 회사 도메인 거꾸로 씀 없으면 마음대로
interface : Storyboard
Langauage : Objective-C

이름 짓는 거 빼고 다 디폴트로 두고 Next 클릭




보안 상 다음 화면은 캡쳐 안했는데, 프로젝트 저장할 위치 지정하면 됨.

프로젝트 생성 후 첫 화면이다 !
여기는 환경설정하는 화면

왼쪽 상단 프로젝트 네비게이터 -> main 파일

UI를 보여주고 이런저런 컨트롤을 배치할 수 있는 화면이다.
이 화면에서 레이블, 버튼, 입력필드 등등을 배치하면 된다.
이제 이 화면 위에 몇 가지 필요한 컨트롤들을 배치해보자.

오른쪽 상단 "+"(Library) 버튼 클릭

text field : 사용자로부터 입력 받을 수 있는 컨트롤
이거 드래그 해서 흰 아이폰 화면 위에 얹어놓기

오른쪽 보면 갑자기 복잡스러운 게 생겼다..
방금 얹은 text field에 대한 속성들이다.

난 숫자만 입력하도록 하고 싶으니, 속성값을 바꿔서
숫자 키패드가 뜨도록 수정해봄

Text Input Traits - Keyboard Type : Number Pad
-> 숫자 키패드가 뜨도록 설정 완료

추가로 버튼 1개, label 1개를 더 추가했다.
label 텍스트 정렬을 중앙 정렬로 변경했다.
이건 위 스샷 오른쪽 속성 유심히 보면 있음.

조잡하지만 UI 완성..

버튼을 눌렀을 때 화씨를 섭씨로 변환하는 동작을 구현해보자

여러 밑줄 아이콘 -> assistant 클릭

오른쪽에 ViewController.m 을 열어준다.
물론 왼쪽에 프로젝트 네비게이터에서 직접 파일을 클릭해서 열어도 됨.
근데 화면이랑 코드 같이 보면 더 좋자나용

근데 .m 파일전에 .h파일에 정의 먼저 해야하니까 .h파일로 바꾸자

이제 섭씨 온도를 입력하고 버튼을 누르면 화씨 온도로 변환해서 보여주는 메소드를 구현해야한다.
그러기 위해선 1)아웃렛을 정의한 후 2) 메소드를 구현하는 과정이 필요하다.

아웃렛이 무엇일까 ? ㅜㅜ

아웃렛

ViewController 메소드에서 화면 위 컨트롤 객체에 접근하기 위해서는 아웃렛이 필요하다.
아래는 세 개의 컨트롤(label, button, text field)아웃렛을 만드는 과정이다.
아래 사진들은 컨트롤 Ctrl+클릭 -> 드래그 @interface 구문 안에 위치 시켰을 때 뜨는 연결 상자이다.

버튼 컨트롤은 직접 접근해서 속성이나 값을 바꾼다기 보단, 눌렀을 때의 이벤트를 구현해야하니까
Connection : Action 으로 설정한다.

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutlet UITextField *edtTemp;
@property (strong, nonatomic) IBOutlet UILabel *lblResult;


- (IBAction)btnOk:(id)sender;
@end

.m 파일로 오면 .h파일에서 정의했던 버튼 이벤트 틀이 구현되어 있다.

썹씨 -> 화씨로 바꾸는 동작 구현 코드.
참고로 objective-C는 "_edtTemp.text.doubleValue()" == "[_edtTemp.text doubleValue]" 랑 같은 의미다.

'.'점을 쓰기 싫으면 '[ ]'로 묶어부고 '.'대신 띄어쓰기 쓰면 되나봄
굳이;;

왼쪽 상단의 재생 버튼 누르면 빌드가 되고 에뮬레이터가 생성되어서 가상 아이폰을 맥에 띄워 결과물을 확인할 수 있다.

결과물 !

끝✨

0개의 댓글