게시일:
서론
애플의 iOS 플랫폼은 견고한 UI 구성 요소와 다양한 기능을 갖춘 매우 강력한 애플리케이션 개발 환경을 제공합니다. 이 글에서는 Swift 프로그래밍 언어를 사용하여 UIKit 프레임워크를 기반으로 한 아이폰 앱을 개발하는 방법을 탐구할 것입니다. 특히, UITableViewController를 활용하여 할 일 목록(To-Do List) 앱을 만드는 과정에 대해 자세히 설명하겠습니다. 이 프로젝트는 UIKit의 기본 개념을 이해하는 데 큰 도움이 될 것입니다.
Swift와 UIKit 소개
Swift는 애플에서 개발한 프로그래밍 언어로, 빠르고 안전하며 현대적인 문법을 제공합니다. UIKit는 iOS 앱의 사용자 인터페이스를 구축하는 데 사용되는 프레임워크로, 버튼, 레이블, 텍스트 필드 등 다양한 UI 구성 요소를 제공하여 개발자가 매력적이고 직관적인 앱을 만들 수 있도록 돕습니다.
할 일 목록 앱의 주요 기능
이번 프로젝트에서 우리가 목표로 할 주된 기능은 다음과 같습니다:
- 할 일을 추가하고 삭제할 수 있는 기능
- 할 일을 체크하여 완료 상태로 표시하는 기능
- 할 일 목록을 저장하고 불러오는 기능
프로젝트 설정
이제 Xcode를 열고 새로운 iOS 프로젝트를 생성해 봅시다. ‘Single View App’ 템플릿을 사용하고, 언어는 Swift로 선택합니다. 프로젝트 이름을 ‘ToDoList’로 설정합니다.
UI 설계
앱의 UI를 설계하기 위해 스토리보드를 사용합니다. Main.storyboard 파일을 열고, UITableViewController를 추가합니다. 이를 위해 다음 단계를 따릅니다:
- 스토리보드에서 기존 View Controller를 선택하고 삭제합니다.
- 라이브러리에서 UITableViewController를 드래그하여 스토리보드에 추가합니다.
- 새로운 UITableViewController에 ‘ToDoListTableViewController’라는 클래스 이름을 설정합니다.
데이터 모델 생성
할 일을 저장할 데이터 모델을 생성합니다. 이를 위해 새로운 Swift 파일을 추가하고, ‘Task’라는 클래스를 생성합니다.
class Task { var title: String var isCompleted: Bool init(title: String) { self.title = title self.isCompleted = false } }
위의 코드는 단순한 할 일 모델을 정의합니다. 각 할 일은 제목과 완료 여부를 가지고 있습니다.
UITableViewDataSource 설정
이제 ‘ToDoListTableViewController’ 클래스에 UITableViewDataSource 프로토콜을 채택하여 테이블 뷰의 데이터를 제공할 수 있도록 설정합니다. 다음의 코드를 추가합니다.
class ToDoListTableViewController: UITableViewController { var tasks: [Task] = [] override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tasks.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "TaskCell", for: indexPath) let task = tasks[indexPath.row] cell.textLabel?.text = task.title cell.accessoryType = task.isCompleted ? .checkmark : .none return cell } }
이제 UITableViewController가 올바른 데이터 수를 반환하고 각 셀에 대한 내용을 업데이트합니다.
할 일 추가 기능 구현
할 일을 추가하는 기능을 구현하기 위해 알림이나 팝업을 이용하여 사용자가 할 일을 입력할 수 있는 인터페이스를 제공합니다. 이를 위해 새로운 ViewController를 생성하고, 텍스트 필드와 버튼을 디자인합니다. 사용자가 할 일을 입력한 후 버튼을 클릭하면, 입력된 내용을 tasks 배열에 추가하고 테이블 뷰를 갱신합니다.
할 일 삭제 기능 구현
각 셀을 스와이프하면 해당 할 일을 삭제할 수 있도록 설정합니다. UITableViewDelegate의 tableView(_:commit:forRowAt:)
메서드를 사용합니다.
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { tasks.remove(at: indexPath.row) tableView.deleteRows(at: [indexPath], with: .fade) } }
할 일 완료 상태 변경 기능 구현
각 할 일을 탭했을 때 완료 상태가 변경되도록 설정합니다. tableView(_:didSelectRowAt:)
메서드를 오버라이드하여 처리합니다.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tasks[indexPath.row].isCompleted.toggle() tableView.reloadRows(at: [indexPath], with: .automatic) }
데이터 저장 및 불러오기
앱이 종료된 후에도 할 일 목록이 유지될 수 있도록 UserDefaults를 사용하여 데이터를 저장하고 로드합니다. 다음의 메서드를 구현합니다:
func saveData() { let encoder = JSONEncoder() if let encoded = try? encoder.encode(tasks) { UserDefaults.standard.set(encoded, forKey: "SavedTasks") } } func loadData() { if let savedTasks = UserDefaults.standard.object(forKey: "SavedTasks") as? Data { let decoder = JSONDecoder() if let loadedTasks = try? decoder.decode([Task].self, from: savedTasks) { tasks = loadedTasks } } }
결론
이제 우리는 Swift와 UIKit을 사용하여 간단한 할 일 목록 앱을 만들었습니다. UITextField, UITableView, UIButton과 같은 UIKit의 주요 구성 요소를 사용하는 방법을 배웠고, 데이터 모델을 생성하고, UITableViewDataSource 및 UITableViewDelegate를 활용하여 데이터를 표시하고 조작하는 방법을 익혔습니다. 이러한 과정을 통해 iOS 개발에 대한 기본적인 이해를 심화할 수 있었습니다.