๋ฐ์ดํฐ๋ฅผ ๋ชฉ๋ก ํํ๋ก ๋ณด์ฌ์ค ์ ์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ UI Component
โ UIScrollView
๋ฅผ ์์๋ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ง์ ์ปจํ
์ธ ๋ฅผ ๋ณด์ฌ์ค ์ ์์
-
์ฌ๋ฌ ๊ฐ์ Cell์ ๊ฐ์ง๊ณ ์๊ณ ํ๋์ ์ด๊ณผ ์ฌ๋ฌ ํ์ ์ง๋๊ณ ์์ผ๋ฉฐ, ์์ง์ผ๋ก๋ง ์คํฌ๋กค ๊ฐ๋ฅ
-
Section
์ ํตํด ํ์ ๊ทธ๋ฃนํํ์ฌ ์ฝํ ์ธ ๋ฅผ ์ข ๋ ์ฝ๊ฒ ํ์ ๊ฐ๋ฅ -
Section
์Header
,Footer
์ View๋ฅผ ๊ตฌ์ฑํด ์ถ๊ฐ์ ์ธ ์ ๋ณด ํ์ ๊ฐ๋ฅ
More
Controller๊ฐ Model๊ณผ View๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋๋ฐ, controller์์ model, view๋ก๋ ์์ ๋กญ๊ฒ ์ ๊ทผ๊ฐ๋ฅํ์ง๋ง View์์ Controller๋ก์ ์ํต์ ์ ํ์ ์ด๋ค. ์ฆ, View์์ Controller์๊ฒ View์ ์ ๋ณด ๋ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋งํด์ค ๋, Delegate์ DataSource๋ฅผ ์ฌ์ฉํด์ ์์ฌ์ํต์ ์งํํ๋ค.
-
Delegate
-
ํด์ผํ ์ผ์ ์์ํ ๊ฒ์ผ๋ก, ์ด๋ค ํ๋์ ๋ํ ๋์์ ์ ์
-
์๊ฐ์ ์ธ ๋ถ๋ถ ์์ , ํ์ ์ ํ ๊ด๋ฆฌ, ํ ์ด๋ธ๋ทฐ์ ๊ฐ๋ณ ํ ํธ์ง ๋ฑ
-
๋์ ์ํ
-
-
Datasource
-
๋ฐ์ดํฐ ๋ชจ๋ธ์ Delegate
-
์๊ฐ์ ์ธ ๋ชจ์์ ๋ํ ์ ๋ณด ์ ๊ณต
-
๋ฐ์ดํฐ๋ฅผ ๋ฐ์ view๋ฅผ ๊ทธ๋ ค์ฃผ๋ ์ญํ
-
๋ณด์ฌ์ฃผ๊ธฐ
-
UITableView๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋,
UITableViewDatasource
, UITableViewDelegate
ํ๋กํ ์ฝ ์ฑํํด์ ๊ตฌํํด์ผ ํ๋ค.
TableView
๋ Datasource
์ Delegate
์ ์์ ๋ฐ๋ผ TableView๋ฅผ ์ฌ์ฉ์์๊ฒ ์ด๋ป๊ฒ ํ์ํ ๊ฒ์ธ์ง ๊ฒฐ์
-
Datasource
: ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ view ๊ทธ๋ฆฌ๊ธฐ-
์ด section์ ๊ฐ์
-
section์ ํ ๊ฐ์
-
ํ์ ์ด๋ค ์ ๋ณด ํ์?
-
-
Delegate
: ํ ์ด๋ธ๋ทฐ์ ๋์๊ณผ ์ธ๊ด ๋ด๋น-
view๊ฐ ๋ณ๊ฒฝ๋๋ ์ฌํญ์ Delegate๊ฐ ๋ด๋น
-
view๋ delegate์๊ฒ ์์กดํ์ฌ ์ ๋ฐ์ดํธ
-
ํ์ ๋์ด
-
ํ์ ์ ํํ๋ฉด ์ด๋ค ์ก์ ์ ํ ๊ฒ?
-
ํ ์ด๋ธ ๋ทฐ๋ฅผ ์์ฑํ๊ณ ์์ ํ๋๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ํ ์ด๋ธ ๋ทฐ ๊ฐ์ฒด์ ์ ๊ณต
TableView๋ฅผ ์์ฑํ๊ณ ์์ ํ๋ ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
โ ย ๋ฉ์๋๋ ํ์ ์ ์ ๋ฉ์๋
extension ViewController: UITableViewDataSource {
//๊ฐ ์น์
์ ํ์ํ ํ์ ๊ฐ์ โ
//Intํ์
์ผ๋ก ๊ฐ์ ๋ฐํํ๋ฉด, ํ
์ด๋ธ๋ทฐ์ ๋ฐํ๋ ๊ฐ์๋งํผ ํ์ด ํ์๋๋ค
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {}
//ํน์ ์ธ๋ฑ์ค row์ cell์ ๋ํ์ ๋ณด๋ฅผ ๋ฃ์ด cell ๋ฐํ โ
//์
์ ๊ตฌ์ฑํ๊ณ ๋ณด์ฌ์ค ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ ํ์, ์ด ๋ฉ์๋์ ๋ฐํํ๋ฉด ๊ตฌ์ฑํ ์
์ด ํ
์ด๋ธ๋ทฐ์ ํ์๋๋ค.
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {}
//์ด ์น์
๊ฐ์
//Intํ์
์ผ๋ก ์น์
์ ๊ฐ์๋ฅผ ๋ฐํ
override func numberOfSections(in tableView: UITableView) -> Int {}
//ํน์ ์น์
์ ํค๋ ํ์ดํ
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {}
//ํน์ ์น์
์ ํํฐ ํ์ดํ
override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {}
//ํน์ ์์น์ ํ์ด ํธ์ง ๊ฐ๋ฅ
//return true -> ํธ์ง ๊ฐ๋ฅํ๊ฒ ํด์ค
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {}
//ํน์ ์์น์ ํ์ ์ฌ์ ๋ ฌ ๊ฐ๋ฅ
//return true -> ์ฌ์ ๋ ฌ ๊ฐ๋ฅํ๊ฒ ํด์ค
override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {}
//ํ
์ด๋ธ ๋ทฐ ์น์
์ธ๋ฑ์ค ํ์ดํ
override func sectionIndexTitles(for tableView: UITableView) -> [String]? {}
//์ธ๋ฑ์ค์ ํด๋นํ๋ ์น์
์๋ ค์ฃผ๊ธฐ
override func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {}
//์ค์์ดํ ๋ชจ๋, ํธ์ง ๋ชจ๋์์ ๋ฒํผ ์ ํํ๋ฉด ํธ์ถ
//ํ์ ๋ณ๊ฒฝ์ฌํญ์ commit
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {}
//ํ์ด ๋ค๋ฅธ ์์น๋ก ์ด๋๋๋ฉด ์ด๋์์ ์ด๋๋ก ์ด๋ํ๋์ง ์๋ ค์ฃผ๊ธฐ
override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {}
}
ํ ์ด๋ธ ๋ทฐ์ ์๊ฐ์ ์ธ ๋ถ๋ถ์ ์ค์ ํ๊ณ , ํ์ ์ก์ ๊ด๋ฆฌ, ์ก์ธ์๋ฆฌ ๋ทฐ ์ง์, ํ ์ด๋ธ ๋ทฐ์ ๊ฐ๋ณ ํ ํธ์ง์ ๋์
ํ์ ๋ฉ์๋ ์์
extension ViewController: UITableViewDelegate {
//ํ ์ ํ๋์์ ๋ ํธ์ถ
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {}
//ํ ์ ํ ํด์ ๋์์ ๋ ํธ์ถ
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {}
//ํน์ ์์น ํ์ ๋์ด
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {}
//์ง์ ๋ ์น์
์ ํค๋๋ทฐ ๋๋ ํธํฐ๋ทฐ์ ํ์ํ view๋ ์ด๋ค๊ฑฐ?
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {}
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {}
//์ง์ ๋ ์น์
์ ํค๋๋ทฐ ๋๋ ํธํฐ๋ทฐ ๋์ด
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {}
//ํ
์ด๋ธ๋ทฐ๊ฐ ํธ์ง๋ชจ๋์ ๋ค์ด๊ฐ์ ๋ ํธ์ถ
override func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {}
//ํ
์ด๋ธ๋ทฐ๊ฐ ํธ์ง๋ชจ๋์์ ๋์์ ๋ ํธ์ถ
override func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) {}
//ํ
์ด๋ธ๋ทฐ๊ฐ ์
์ ์ฌ์ฉํด์ ํ์ ๊ทธ๋ฆฌ๊ธฐ ์ง์ ์ ํธ์ถ
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {}
//ํ
์ด๋ธ๋ทฐ๋ก๋ถํฐ ์
์ด ํ๋ฉด์ ์ฌ๋ผ์ง๋ฉด ํธ์ถ
override func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {}
}