task가 저장된 다음 화면으로 넘어가기까지는 구현했는데..
과제의 요구사항에 맞도록 스위치도 넣고 이것 저것 수정해야겠다.
할 수 있겠지? 할 수 있을까?
느낌표만 던지는 인생이고 파..
ViewController ▽
//
// ViewController.swift
// MyTodoList
//
// Created by 채나연 on 3/20/24.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet var tableView: UITableView!
var tasks = [String]()
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Tasks"
tableView.delegate = self
tableView.dataSource = self
// Setup
if !UserDefaults().bool(forKey: "setup") {
UserDefaults().set(true, forKey: "setup")
UserDefaults().set(0, forKey: "count")
}
// Get all current saved tasks
updateTasks()
}
func updateTasks() {
tasks.removeAll()
guard let count = UserDefaults().value(forKey: "count") as? Int else {
return
}
for x in 0..<count {
if let task = UserDefaults().value(forKey: "task_\(x+1)") as? String {
tasks.append(task)
}
}
tableView.reloadData()
}
@IBAction func didTapAdd() {
let vc = storyboard?.instantiateViewController(identifier:"entry") as! EntryViewController
vc.title = "New Task"
vc.update = {
DispatchQueue.main.async {
self.updateTasks()
}
}
navigationController?.pushViewController(vc, animated: true)
}
}
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let vc = storyboard?.instantiateViewController(identifier:"task") as! TaskViewController
vc.title = "New Task"
vc.task = tasks[indexPath.row]
navigationController?.pushViewController(vc, animated: true)
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tasks.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = tasks[indexPath.row]
return cell
}
}
EntryViewController ▽
//
// EntryViewController.swift
// MyTodoList
//
// Created by 채나연 on 3/20/24.
//
import UIKit
class EntryViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var field: UITextField!
var update: (() -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
field.delegate = self
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save", style: .done, target: self, action: #selector(saveTask))
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
saveTask()
return true
}
@objc func saveTask() {
guard let text = field.text, !text.isEmpty else {
return
}
guard let count = UserDefaults().value(forKey: "count") as? Int else {
return
}
let newCount = count + 1
UserDefaults().set(newCount, forKey: "count")
UserDefaults().set(text, forKey: "task_\(newCount)")
update?()
navigationController?.popViewController(animated: true)
}
}
TaskViewController ▽
//
// TaskViewController.swift
// MyTodoList
//
// Created by 채나연 on 3/20/24.
//
import UIKit
class TaskViewController: UIViewController {
@IBOutlet var label: UILabel!
var task: String?
override func viewDidLoad() {
super.viewDidLoad()
label.text = task
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Delete", style:.done, target:self, action: #selector(deleteTask))
}
@objc func deleteTask() {
// let newCount = count - 1
// UserDefaults().setValue(newCount, forKey: "count")
// UserDefaults().setValue(nil, forKey: "task_\(currentPosition)")
}
}
main storyboard ▽
'iOS 앱 개발자 프로젝트 > 개인 프로젝트' 카테고리의 다른 글
[iOS] 메모 앱 만들기 Day-6 (0) | 2024.03.27 |
---|---|
[iOS] 메모 앱 만들기 Day-5 (4) | 2024.03.26 |
[iOS] 메모 앱 만들기 Day-2 (4) | 2024.03.21 |
[iOS] 메모 앱 만들기 " Let's start !" (2) | 2024.03.20 |
[Project] 숫자 야구 게임 만들기 (Lv3) (0) | 2024.03.12 |