우선 프로젝트를 하기위해서는 Xcode를 실행합니다.
이 후 Create New Project를 선택하여 프로젝트를 만들 수 있습니다.
Single View App을 선택하라고 교재에는 나와 있지만 찾아 보니까 해당 기능은 오래된 버전에서만 작동하는 걸로 확인했습니다.
해당 글에 따르면 iOS 파트에 App을 통해서 이전과 동일하게 사용이 가능하다고 합니다.
프로젝트를 생성하면 해당 사진과 같이 프로젝트에 대한 설정을 진행합니다.
- Product Name - 프로젝트의 이름을 설정
- Team - 개발자 프로그램에 등록된 ID 또는 팀을 입력 (저는 None으로 설정해 놓았습니다)
- Organization Identifier - 조직의 식별자를 입력, 일반적으로 개인이나 조직의 도메인 주소(URL)을 역순으로 입력
- Bundle Identifier - 식별자, Organization Identifier에서 작성된 이름. Product Name 으로 자동 생성됩니다 (앱을 앱스토어에 등록할 때 다른 앱들과 구분하는 용도로 사용하므로 유일한 식별자를 사용하여 앱을 등록해야 합니다)
- Interface - 사용하고자 하는 Interface를 선택( Storyboard, SwiftUI )
- Language - 앱 개발에 사용할 언어를 선택 (Swift, Object-c)
- Storage - iOS에서 제공하는 데이터 관리 툴킷의 사용 여부를 선택 None, Core Data 중 선택할 수 있다
- Host in CloudKit - 데이터를 iCloud에 저장하는 방식으로 할지 설정
- Include Tests - 테스트 폴더가 포함 될지
프로젝트를 생성하면 내비게이터 영역에 프로젝트 이름으로 된 폴더가 생기고 그 밑에 하위 폴더들이 자동으로 생성됩니다.
하나씩 살펴보면
- AppDelegate - 앱의 실행 주기(Life Cycle)를 관리하는 내용의 스위프트 소스 코드가 들어 있는 클래스 파일, 앱을 실행 및 종료 또는 백그라운드 실행에 대한 일들을 관리
- SceneDelegate - 사용자 인터페이스(User Interface:UI)의 실행 주기(Life Cycle)를 관리하는 내용의 스위프트 소스가 들어있는 클래스 파일
- ViewController - 화면에 보이는 뷰에서 처리하는 내용의 스위프트 소스 코드를 담고 있는 클래스 파일, 일반적으로 프로그래머는 이 파일에서 코딩을 하게 되며 뷰 하나당 클래스 하나가 대응된다. 그러므로 스토리보드에 여러 개의 뷰를 추가하면 뷰의 개수만큼 뷰 컨트롤러 클래스 파일이 필요하다
- Main - 앱의 내용을 시각적으로 쉽게 이해하고 프로그래밍할 수 있도록 그림으로 표현한 파일, 이 스토리보드를 통해 화면에 보이는 내용 및 뷰와 뷰 간의 연결 관계 등을 표현할 수 있다
- Assets - 앱의 아이콘을 보관하는 저장소, 이곳에서 앱 아이콘을 설정해야 원하는 앱을 표시 할 수 있다
- LaunchScreen - 앱이 실행될 때 잠시 나타나는 스플래시 화면을 만드는 스토리보드
- Info - 앱이 실행되는 데 필요한 정보를 저장하고 있는 파일
Main에 간단한 Lable을 통해 사용자 입력을 통해 문자를 출력하는 프로젝트를 만들려 합니다. 아래와 같이 화면을 구성 해 보았습니다.
아이폰 화면 구성은 최신 버전인 iPhone 15 pro 규격으로 설정 하였고 Main에서 진행하였습니다.
각 Lable은 우측 상단 모서리 부분의 +버튼을 눌러서 추가할 수 있습니다, 제가 추가한 항목으로는 텍스트 항목을 보여주는 레이블(Lable)객체와 사용자가 직접 글자를 입력할 수 있는 텍스트 필드(Text Field) 객체, 이름을 전송하는 버튼(Button) 객체를 사용하였습니다.
추가한 각 객체를 우측 보조 편지기에 우클릭으로 아웃렛 변수를 추가하거나 키보드의 Control + 드래그를 통해서 추가할 수 있습니다.
'Hello' 레이블을 뷰 컨트롤러의 클래스 선언문 바로 아래에 추가해 줍니다, 아웃렛 변수는 일반적으로 클래스(Class) 선언부 바로 아래에 추가합니다.
아웃렛 변수를 추가하면 위와 같은 창이 생기는데 위에 아웃렛 변수 이름을 지정해 주고 Type은 해당 레이블에 맞는 것을 선택해 줍니다.
위와 같은 방식을 통해 Text Field도 아웃렛 변수 추가를 합니다, 좀금 전에 추가한 변수 아래에 끌어 놓습니다.
위와 같이 진행하면 12번 14번 줄과 같은 상태가 되어 있을 겁니다.
마지막으로 액션 함수 'Send' 버튼을 맨 아랫단에 끌어다 놓습니다, 일반적으로 액션 함수는 클래스의 맨 마지막 부분에 추가합니다.
Type은 UIButton으로 지정합니다.
이후 버튼 클릭 시 동작을 구현하기 위하여 내비게이터에 있는 ViewController를 선택하여 버튼 클릭 시 동작할 액션 함수를 아래와 같이 코딩합니다.
@IBAction func btnSend(_ sender: UIButton) {
}
@IBAction func btnSend(_ sender: UIButton) {
lblHello.text = "Hello, " + txtName.text!
}
"Hello, " 라는 문자열과 txtName.text의 문자열을 결합하여 lblHello.text에 넣는다는 의미입니다.
앱을 실행하면 아래와 같이 작동하는 것을 확인할 수 있다.