<TIL>
์ค๋์ TodoList ๋ง๋ค๊ธฐ ๊ฐ์ธ๊ณผ์ ๊ตฌํ ๊ณผ์ ์
์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํ๋ค.โบ๏ธ
์ด์ ์ ์ผ๋ ์ฝ๋ ๋ค์ ๋ ๊น๋จน๊ณ ..
๋ค์ ๋ ๋ฆฌ์
^-^ ํ๋ฃจ ์ข
์ผ ๋ฉํ ๋ฐ์ฌ์ฌ์ญ๐ช๐ป
๋ค์ ์ฐจ๊ทผ์ฐจ๊ทผ ์์..!^^
์ญ์ ์ ๋ฆฌ๋ฅผ ํด์ผ ์ ๊น๋จน๊ณ ๊ธฐ์ต์ ์ค๋ ๋จ๋ ๊ฒ ๊ฐ๋ค.ใ
ใ
์ด๋ฒ TodoList ์ฑ ๋ง๋ค๊ธฐ ๊ฐ์ธ๊ณผ์ ์๊ฐ๋
(4์ฃผ์ฐจ_iOS ์ฑ ๊ฐ๋ฐ ์
๋ฌธ_5์ผ์ฐจ) ๊ฒ์๋ฌผ์ ์ ๋ฆฌ๋์ด์๋ค.
<์์ฑ๋ณธ>
์คํ ๋ฆฌ๋ณด๋ - ๊ธฐ๋ณธ UI ๊ตฌ์ฑ
- navigation controller ์ฐ๊ฒฐ (Bar Button Item ์ฌ์ฉํ๊ธฐ ์ํจ)
- TableView ์ถ๊ฐ
- Constraints ์ํ์ข์ฐ 0 ์ค์
- Prototype Cells 1๋ก ์ค์
- Label & Switch ์ถ๊ฐ (Label์ ๋ฒ์ ํ์ธ์ฉ์ผ๋ก background ์์ ์ค์ ํจ)
- Label & Switch Stack View๋ก ๋ฌถ๊ธฐ
Stack View Spacing ์ค์ ํ๊ธฐ
(→ Label๊ณผ Switch ์ฌ์ด์ ๊ณต๊ฐ)
Stack View → Content View
(control drag & drop)
์์ ๋กญ๊ฒ ์ค์
์๋จ ์ถ๊ฐ ๋ฒํผ
→ Bar Button Item
ViewController
UITableView, UILabel, UISwitch
VC, Cell์ ์ฐ๊ฒฐํ๊ธฐ
UITableViewCell class ์ด๋ฆ
→ Class & identifier ์ค์ ํ๊ธฐ
์ค์ ํด ๋์ title, isOn ์ ์ ์ฉ๋๋์ง ํ์ธ!
์ถ๊ฐ ๋ฒํผ
์ถ๊ฐ ๋ฒํผ ViewController์ ์ฐ๊ฒฐํ๊ณ ,
'์ถ๊ฐ' ๋ฒํผ ํด๋ฆญ ์, alert ๋์ฐ๊ธฐ
์ค๋ฅ์์ด ์ ๋จ๋ ํ์ธ!
๋ค์์ผ๋ก
alert์ ๋ฑ๋ก, ์ทจ์ ๋ฒํผ์ ์ถ๊ฐํ๊ธฐ!!
alert์ ์ฌ๋ฌ๊ฐ์ textField๊ฐ ์กด์ฌํ ์ ์์ง๋ง,
์ฌ๊ธฐ์๋ ํ๋์ textField๋ง ๋ณด์ฌ์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์
textFields[0] ์ด๋ ๊ฒ ์ ์ฝ๋ ์ฒ๋ผ 0๋ฒ์งธ ๊ฐ์ ธ์ค๊ธฐ.
๊ทธ๋ฆฌ๊ณ
reloadData() ์์ง๋ง๊ธฐ!
์ด๋ ๊ฒ ํ๊ณ , ์คํ์ํค๋ฉด?
์ด๋ ๊ฒ ๋ฑ๋ก ๋ฒํผ์ด ์ถ๊ฐ๋์ด์๊ณ ,
์ํ๋ title์ ์ ๊ณ '๋ฑ๋ก' ํด๋ฆญํ๋ฉด?
์ด๋ ๊ฒ ์ ์์ ์ผ๋ก ์ถ๊ฐ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!
์ด์ด์ ์ทจ์ ๋ฒํผ์ ์ถ๊ฐํ๊ธฐ
์ทจ์๋ฒํผ์ ํด๋ฆญํ์ ๋,
์ด๋ ํ ๋์๋ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ๋จํ๋ค!
(sytle: .cancel ๋์ .default ํด๋ ์๊ด์์)
default๋ก ํด๋์ ์ํ์์
alert.addAction(registerButton)๊ณผ alert.addAction(cancelButton) ๋จผ์ ์ฐ์ธ ์์์ ๋ฐ๋ผ์
๋ฒํผ ์ข์ฐ ์์๊ฐ ๋ฌ๋ผ์ง๋ค.
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์
๋ ฅํ๊ณ , ์คํ์ํค๋ฉด?
์ด๋ ๊ฒ ๋ฑ๋ก ์์ ์ทจ์๋ฒํผ์ด ์๊ฒผ๋ค!
(.cancel๋ก ํด์ ์ทจ์๊ฐ ๋จผ์ ๋์จ ๊ฒ์.)
Switch ์ฌ์ฉ
(์๋ฃ/๋ฏธ์๋ฃ ์ํ ๋ณ๊ฒฝ)
๊ตฌ๊ธ๋ง์ผ๋ก ์๋ฃ ์ ๊ฐ๋ก์ ์ ์ถ๊ฐํ ํจ์๋ฅผ ์ฐพ์์
๊ทธ๋๋ก ์ฐธ๊ณ ํ์ฌ ๊ฐ์ ธ์๋ค..ใ
ใ
(์ถ์ฒ)
https://stackoverflow.com/questions/13133014/how-can-i-create-a-uilabel-with-strikethrough-text
๋ฐ๋ก ์ด ๋จ๊ณ์์ selector(์
๋ ํฐ)๊ฐ ํ์ํ๋ค.
์
๋ ํฐ๋ UIKit ๋ด๋ถ์ Objective-C ๋ฐํ์์ผ๋ก ์คํ๋๋ ๋ฉ์๋๊ฐ
์
๋ ํฐ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ฐ์ ๋,
์ ๋ฌ์ ํ์ํ ์
๋ ํฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์
๋ ํฐ๋ ํ์
์ด ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์์ง๋ง,
์์ ๊ฐ์ด #selector()๋ฅผ ์ฌ์ฉํด์ ์ธ์คํด์ค๋ฅผ ์ป๋๋ค.
์์ ๊ฐ์ด ์
๋ ํฐ๋ฅผ ์์ฑํ ๋ฉ์๋๋ @objc๋ฅผ ๋ถ์ฌ์ผํ๋ค.
(#selector์ ์์ func ํจ์๋ฅผ ์ ๋ฌํ๋ฉด ์ธ์์ด ์๋จ!)
tag์ ์ง์ ํด์ฃผ๊ณ ์ถ์ ์ซ์๋ฅผ ๋ด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
์ฌ๊ธฐ์ tag์ indexPath.row๊ฐ ๋ด๊ฒจ์๋ค.
์ฌ๊ธฐ์ toggle()์
Bool๊ฐ์ ๋ฐ์ ์ํค๋ ํจ์์ด๋ค.
์ด๋ ๊ฒ ๋ฃ์ด์ฃผ๊ณ , ์คํ์ํค๋ฉด?
์ค์์น๋ฅผ ๋๋ฅผ ๋๋ง๋ค
๋๋ฒ๊น
์ฐฝ์ print๋๋ ๊ฑฐ ํ์ธ ๊ฐ๋ฅ!
์ค์์น๋ฅผ on/off ํ ๋, ํด๋นํ๋ ๋ฌธ๊ตฌ์ ๊ฐ๋ก์ ์ ๋ฃ์ผ๋ ค๋ฉด
๊ทธ ํ์ ํด๋นํ๋ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์์์ผํ๋ค.
๊ทธ๋์ ์์ ํ์ํด ๋์ ์ฝ๋์ ๊ฐ์ด
cell.doneSwitch.tag = indexPath.row๋ฅผ ํด์ค์ผํ๋ค.
๊ทธ๋ฐ ํ, ์คํ์ํค๋ฉด!
์์์ ๋ถํฐ ํ๋์ฉ ์ค์์น๋ฅผ ํด๋ฆญํ๋ฉด,
์ค์์น ์์น์ ๋ฐ๋ผ 0~2๊น์ง ๋ค๋ฅด๊ฒ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ธฐ์กด์ ์ ์๋
let todo = todoList[indexPath.row] ๋
let row = indexPath.row์ด๋ฏ๋ก
let todo = todoList[row]๋ก ๋ณ๊ฒฝ!
๊ทธ๋ฆฌ๊ณ if ์กฐ๊ฑด๋ฌธ์ ํ์ฉํ์ฌ
์ค์์น๊ฐ isOn์ผ ๋, ์์ ๋ง๋ ๊ฐ๋ก์ ๊ธ๊ธฐ ํจ์ ์ฌ์ฉ๋ todo.title + textColor ํํฌ์
isOn์ด ์๋๋ผ๋ฉด, ๋ ์ด๋ธ ํ
์คํธ ์คํ์ผ nil + ๊ทธ๋ฅ todo.title + textColor ๊ฒ์์
์ด๋ ๊ฒ ํ๊ณ ์คํํด๋ณด๋ฉด?
์ด๋ ๊ฒ doneSwitch๊ฐ isOn์ด ๋๋ฉด,
title์ ๊ฐ๋ก์ ์ด ๊ทธ์ด์ง๊ณ , ๊ธ์ ์์๋ ๋ณ๊ฒฝ๋๋ค.
Todo ์ญ์ ํ๊ธฐ
์ด๋ฒ์๋ Todo๋ฅผ ์ผ์ชฝ์ผ๋ก ์ค์์ดํํ๋ฉด,
์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค.
tableView๋ฅผ ์ณ์ ๋ด๋ฆฌ๋ค๋ณด๋ฉด,
'to commit the insertion or deletion of~' ๋ผ๊ณ ์ ํ์๋๊ฑฐ ์ ํ
์ด์ ์๋ ์ฝ๋๋ง ์์ฑํ๋ฉด ๋๋ค.
if ์กฐ๊ฑด๋ฌธ์ ํ์ฉํ์ฌ
editingStyle์ด .delete ์ผ ๋,
todoList์์ ํด๋นํ๋ ํ์ ์ ๊ฑฐํ๋๋ก!
๊ทธ๋ฆฌ๊ณ ์ ์ฝ๋ ์ฒ๋ผ ์ญ์ ๋ ๋์ ์ ๋๋ฉ๋์
์ ์ ํํ ์ ์๋ค.
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์คํํ๋ฉด ์์ผ๋ก ์ค์์ดํํด์ delete๋ฅผ ํด๋ฆญํ๋ฉด,
ํด๋น ์
์ด ์ญ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฌ๊ธฐ๊น์ง
TodoList ์ฑ ๋ง๋ค๊ธฐ ํ์ ๊ตฌํ์ ์ ๋ฆฌํด๋ดค๋ค.โบ๏ธ
Standard๋ฐ ๊ณผ์ ๋ค ํ๊ณ ๋๋ฉด,
์ด์ด์ ์ ํ ๊ตฌํ ์๋ํด๋ณด๋ ค๊ณ ํ๋ค.
(๋์ค์ ์ ๋ฆฌ ์์ )
'iOS ์ฑ ๊ฐ๋ฐ ์ข ํฉ๋ฐ > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5์ฃผ์ฐจ_iOS ์ฑ ๊ฐ๋ฐ ์ ๋ฌธ_3์ผ์ฐจ_Auto Layout ์ฐ์ต (2) | 2024.03.27 |
---|---|
5์ฃผ์ฐจ_iOS ์ฑ ๊ฐ๋ฐ ์ ๋ฌธ_2์ผ์ฐจ_ToDoList ์ฑ ๋ง๋ค๊ธฐ_์ ํ ๊ตฌํ (0) | 2024.03.26 |
4์ฃผ์ฐจ_iOS ์ฑ ๊ฐ๋ฐ ์ ๋ฌธ_5์ผ์ฐจ_ToDoList ๋ง๋ค๊ธฐ_TIL (0) | 2024.03.22 |
4์ฃผ์ฐจ_iOS ์ฑ ๊ฐ๋ฐ ์ ๋ฌธ_4์ผ์ฐจ_๊ฐ์ธ ๊ณผ์ ์๋_TIL (0) | 2024.03.21 |
4์ฃผ์ฐจ_iOS ์ฑ ๊ฐ๋ฐ ์ ๋ฌธ_3์ผ์ฐจ_UIView ์ฐ์ต (0) | 2024.03.20 |