์ฐ์ธก ํ๋ฉด์ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ ์์๊น? ๊ฐ๋จํ๊ฒ TableViewController๋ฅผ ์ด์ฉํด๋ณด๋๋ก ํ์.
๋ค์ด๊ฐ๊ธฐ ์ ์ ์ฌ์ฉํ ํ๋กํ ์ฝ์ ๊ฐ๋จํ๊ฒ ์๊ฐํ๊ฒ ๋ค.
CaseIterable
์ด๊ฑฐํ์ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ํ๋กํ ์ฝ
CustomStringConvertible
์๋ ๋งํฌ ์ฐธ๊ณ
[Swift] CustomStringConvertible
ํ๊ฐ์ง ์๋ก ์๊ฒ๋ ๊ฒ์ CustomStringConvertible ํ๋กํ ์ฝ์ ์ฑํํ๊ณ , ์ถ๋ ฅ์ ํ๋ฉด description์ผ๋ก ์ ํด ๋์ String ๊ฐ์ผ๋ก ์ถ๋ ฅ๋๊ธธ๋ ๊ทธ ๋์ Type ์ญ์ String์ธ ์ค ์์์ง๋ง Type์ ๊ทธ๋๋ก ์ด๊ฑฐํ ํ์ ์ด์๋ค. print(SettingType.total)์ ๊ฐ์ด ์ถ๋ ฅ์ ํ๋ฉด "์ ์ฒด ์ค์ "๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋๋ฐ ์ด๋ฅผ ํค๋์ ํ์ด๋ฅผ๋ก ์ฌ์ฉํ ์ ์์๋ ์ด์ ๋ String ํ์ ์ด ์๋๋ผ ์ด๊ฑฐํ ํ์ ์ด์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ String์ผ๋ก ๋ณํํด์ฃผ์ด์ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
// ๋ค์๊ณผ ๊ฐ์ ์ธ์คํด์ค ๋ฉ์๋๋ ์๋๋ผ.
String(describing: <#T##CustomStringConvertible#>)
๋์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด์ ์์ ํ๋ฉด์ ๊ตฌํํ๋ค.
import UIKit
enum SettingType: CaseIterable, CustomStringConvertible {
case total
case personal
case etc
var contents: [String] {
switch self {
case .total:
return ["๊ณต์ง์ฌํญ", "์คํ์ค", "๋ฒ์ ์ ๋ณด"]
case .personal:
return ["๊ฐ์ธ/๋ณด์", "์๋ฆผ", "์ฑํ
", "๋ฉํฐํ๋กํ"]
case .etc:
return ["๊ณ ๊ฐ์ผํฐ/๋์๋ง"]
}
}
var numberOfRowInSections: Int {
return contents.count
}
var description: String {
switch self {
case .total:
return "์ ์ฒด ์ค์ "
case .personal:
return "๊ฐ์ธ ์ค์ "
case .etc:
return "๊ธฐํ"
}
}
}
final class SettingViewController: UITableViewController {
override func numberOfSections(in tableView: UITableView) -> Int {
return SettingType.allCases.count
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return String(describing: SettingType.allCases[section])
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return SettingType.allCases[section].numberOfRowInSections
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "settingCell") else { return UITableViewCell() }
cell.textLabel?.text = SettingType.allCases[indexPath.section].contents[indexPath.row]
return cell
}
}
'๐ iOS & Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ ์ถ๋ก ๊ณผ ํ์ ์ด๋ ธํ ์ด์ ์ ์๋ ์ฐจ์ด์ ๊ดํ์ฌ(๐ง ํ์ ์ถ๋ก ์ด ๋ ๋น ๋ฅด๋ค?) (2) | 2022.08.02 |
---|---|
[WWDC21] SheetViewController (Session. Customize and resize sheets in UIKit) (0) | 2022.08.02 |
forEach์ for-in์ ๋ํ ๊ณ ์ฐฐ (0) | 2022.07.19 |
์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ Contributor ๋์ด๋ณด๊ธฐ(with FSCalendar) (10) | 2022.07.14 |
Raw Strings (0) | 2022.07.13 |