Local ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ToDo List ์ฑ์ ๋ง๋ค์ด๋ณด์.
1. Project Clone
2. Table View Controller ๋ง๋ค๊ธฐ
Table View Controller ์ถ๊ฐํ๊ธฐ. Controller ๋ก ์ถ๊ฐํ๋ฉด Component ๊ฐ ์ถ๊ฐ๋๋๊ฒ ์๋๋ผ ํ๋ฉด ํ๋๊ฐ ์ถ๊ฐ ๋๋ค.
Prototype table cells must have reuse identifiers.
ํน์ ์์ ๊ฐ์ด prototype์ด identifier๋ฅผ ๋ฐ๋์ ์ฌ์ฌ์ฉํด์ผ ํ๋ค๋(์ฝ๋์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๋) ๊ฒฝ๊ณ ๊ฐ ๋จ๋ฉด Table View Cell(Prototype ๋ถ๋ถ)์ identifier ์ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
3. Initial View ์ง์
๊ธฐ์กด View ๋ ์ ๊ฑฐํ๊ณ ๋ฐฉ๊ธ ๋ง๋ Table View Controller ๋ฅผ inital View ๋ก ํ์ดํ ์ง์ ํด์ค๋ค.
๋ง์ฝ ํ์ดํ ํต์งธ๋ก ๋ ๋ ค๋ฒ๋ ธ๋ค๋ฉด ์์ฑ inspector ์์ Is Initial View Controller ์ฒดํฌํด์ฃผ๋ฉด ๋๋ค.
4. Navigation Controller ์ถ๊ฐํ๊ธฐ
Editor > Embed In > Navigation Controller ๋ฅผ ์ ํํ๋ฉด ์๋ ๊ฒ Navigation Controller ๊ฐ ์ถ๊ฐ๋๋ค.
5. Navigation Top Bar ๊พธ๋ฏธ๊ธฐ
Navigation Top Bar ์ Title ์ง์ ํ๊ธฐ.
Navigation Bar ์ ์์ ๋ฐ Title ์ปฌ๋ฌ ์ง์ ํ๊ธฐ. (Bar Tint ๋ System Blue Color, Title color ๋ White Color)
๋ ์๋๋ค ? Bar Tint ๋ฅผ System Blue Color ๋ก ์ ์ฉํ๋๋ฐ ๋ฐ์์ด ์๋๋ค.
Background, Tint ์ปฌ๋ฌ๋ฅผ System Blue Color ๋ก ๋ชจ๋ ๋ณ๊ฒฝํ๋ ๋ฐ์๋๋ค.
6. ViewController ์ฝ๋ ํ์ผ ์์ ํ์ฌ tableViewController ์ ์ฐ๊ฒฐ
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
↓
import UIKit
class TodoListViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
๊ธฐ๋ณธ์ผ๋ก ์ฃผ์ด์ง ViewController ๋ฅผ TodoListViewController ๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ค. ํ์ผ๋ช ๋ ๋ณ๊ฒฝํด์ค์ผ ํจ!
์์์ ๋ง๋ TableViewController๋ฅผ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ํด๋์ค ์ด๋ฏ๋ก UIViewController ๊ฐ ์๋ UITableViewController ๋ฅผ ์์๋ฐ์์ค๋ค. ์ด๋ ๊ฒ ํ๋ฉด TableView๋ฅผ ๋ณ์๋ก ์ ์ธํด์ค ํ์ ์์ด ์๋์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
tableViewController ์ ์ฌ์ด TodoListVIewController ํด๋์ค์ ์ ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํ๋ค.
์ฐ๊ฒฐ์ด ์๋์ด ์๋ค๋ฉด ํด๋์ค๋ฅผ ์ง์ ์ ํํด์ค๋ค.
7. Table View ๋ฆฌ์คํธ ๋ด์ฉ ํ๋ ์ฝ๋๋ก ํ์ธํ๊ธฐ
import UIKit
class TodoListViewController: UITableViewController {
let itemArray = ["Find Mike", "Buy Eggs", "Destroy Demogorgon"]
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return itemArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TodoItemCell", for: indexPath)
cell.textLabel?.text = itemArray[indexPath.row]
return cell
}
}
tableView ์ ๊ฐ์ ๋ฟ๋ฆฌ๊ธฐ ์ํ ํจ์๋ค์ override ํด์ ์์ฑํด์ค๋ค. (์ฑํ ์ฑ ๋ง๋ค๊ธฐ์์ ๋ฐฐ์ ๋ ๋ด์ฉ. ๋งค์ฐ ๊น๋จน์ใ .)
numberOfRowsInSection ๊ฐ ์๋ ํจ์๋ก row ๊ฐ์ return ํ๊ณ , cellForRowAt ๊ฐ ์๋ ํจ์๋ก cell ์ ๊ฐ์ ๋ด๋๋ค.
*์ฐธ๊ณ
TableView ์ list ๋ฅผ ๋ฟ๋ฆฌ๋ ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ ๋ ํจ์๋ฅผ override ํ๋ค.
//๋ง๋ค์ด์ผ ํ cell ๊ฐ์ ๋ฐํ
func tableView(UITableView, numberOfRowsInSection: Int) -> Int
//์ฌ์ฌ์ฉ ๊ฐ๋ฅํ table view cell์ ์์ฑํด์ ๋ฐํ
func tableView(UITableView, cellForRowAt: IndexPath) -> UITableViewCell
8. ์คํ๊ฒฐ๊ณผ ํ์ธ
์คํํ๋ฉด. 3๊ฐ์ ๋ฐ์ดํฐ๊ฐ 3๊ฐ ํ์ผ๋ก ์ ๋์จ๋ค.