์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- LIS
- ๊ทธ๋ํ
- ๋ณํฉ์ ๋ ฌ
- ๋จธ์ง์ํธ
- DP
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQL
- ํ๋ก์ด๋์์ฌ
- ๊ทธ๋ฆฌ๋
- BFS
- ๊ทธ๋ํ์ํ๋ฌธ์
- ์ ๋ ฌ
- ๊ทธ๋ํํ์
- 11650
- ์์๊ตฌํ๊ธฐ
- Side Menu
- ์๋ฃ๊ตฌ์กฐ
- ๋ฐฑ์ค
- ๊ตฌํ
- ์ํ
- DFS
- ๊น์ด์ฐ์ ํ์
- ์ฐ์ ์์ํ
- ๋๋น์ฐ์ ํ์
- ๋์ ๊ณํ๋ฒ
- ์์ํ์
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- db
- ํ๋ก๊ทธ๋๋จธ์ค
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[iOS] Swift ๋ผ์ด๋ธ๋ฌ๋ฆฌ 'SideMenu'๋ก ์ฌ์ด๋๋ฐ ๊ตฌํํ๊ธฐ - 2 ๋ณธ๋ฌธ
[iOS] Swift ๋ผ์ด๋ธ๋ฌ๋ฆฌ 'SideMenu'๋ก ์ฌ์ด๋๋ฐ ๊ตฌํํ๊ธฐ - 2
.23 2021. 8. 21. 11:58Swift ๋ผ์ด๋ธ๋ฌ๋ฆฌ 'SideMenu'๋ก ์ฌ์ด๋๋ฐ ๊ตฌํํ๊ธฐ - 1 ์์ ์ด์ด์ง๋๋ค.
1.3 ์ฌ์ด๋๋ฉ๋ด ํ๋ฉด ๊ตฌ์ฑ
์ง๋ ํฌ์คํ ์์ ์๋ฃ์ ๋ด์ฉ์ด ์์ด์....
์ฌ์ด๋๋ฉ๋ด์ ๋ณด์ผ ํ๋ฉด์ ์ํ๋ ๋ชจ์ต๋๋ก ์คํ ๋ฆฌ๋ณด๋๋ก ๊ตฌ์ฑํด์ค๋ค. ๋ด์ฉ์ด ๋ณด์ผ Label ํ๋์ Button ํ๋๋ฅผ ๋ฃ์ด์คฌ๋ค. ์ฌ๊ธฐ๊น์ง ํ๋ฉด ์ง์ง ๊ตฌ์ฑ ์๋ฃ!
2. ์ฝ๋ ์ค์
2.1 ์ฝ๋ ์ด๊ธฐ ์ค์
ํ๋ก์ ํธ ํด๋ ๋ด์์ New Group์ ๋๋ฒ ์ถ๊ฐํด ๋ค์๊ณผ ๊ฐ์ด ํด๋๋ฅผ ์์ฑํด์ฃผ๊ณ , UITableViewCell ํ์์ MenuItemCell.swift ํ์ผ๊ณผ UIViewController ํ์์ MainController.swift, SideMenuController.swift ํ์ผ ๋๊ฐ๋ฅผ ๊ฐ๊ฐ View, Controller ํด๋์ ์์ฑํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์คํ ๋ฆฌ๋ณด๋์์ ์ด๊ธฐ ํ๋ฉด์ View Controller์ Class๋ MainController๋ก, Side Menu Navigation Controller์ ๋ธ๋ ค์๋ View Controller์ Class๋ SideMenuController๋ก ์ค์ ํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ SideMenuController ๋ด์ Table View Cell์ Class๋ MenuItemCell์ ์ค์ ํด์ฃผ๊ณ , Identifier์๋ ํธํ ์ด๋ฆ์ ํ ๋นํด์ค๋ค. ๋๋ ํด๋์ค ๊ทธ๋๋ก MenuItemCell๋ก ํ์๋ค.
Main Controller์ Side Menu Navigation Controller ๋ชจ๋ ์ํ๋ ๋๋ก ํ๋ฉด์ ๊ตฌ์ฑํด์ค ๋ค์, ์คํ ๋ฆฌ๋ณด๋์์ Assistant๋ฅผ ์ด์ฉํ์ฌ ์์๋ค์ ์ฐ๊ฒฐํด์ค๋ค.
2.2 ์ฝ๋
์ฌ์ด๋๋ฉ๋ด์ ๊ด๋ จํด์ MainController.swift์์๋ ์์ ํด์ค ๋ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ์๊ณ , SideMenuController.swift ํ์ผ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค.
// SideMenuController.swift
import UIKit
class SideMenuController: UIViewController {
var items = ["๊ฒ์ํ1", "๊ฒ์ํ2", "๊ฒ์ํ3", "๊ฒ์ํ4"]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
talbeView.delegate = self
}
}
extension SideMenuController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuItemCell", for: indexPath) as! MenuItemCell
cell.menuLabel?.text = items[indexPath.row]
return cell
}
}
์ฌ๊ธฐ๊น์ง๋ง ํ๊ณ ์คํ์ํค๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.(๋ฒํผ์ ์์์ ์ด๋ฏธ์ง๋ฅผ ์ค์ ํด์ฃผ์์)
3. ๋ถ๊ฐ ์ค์
3.1 ๋ค์ ํ๋ฉด ์ฐ๊ฒฐ
๊ฒ์ํ์ ์ ํํ์ผ๋ฉด ๋ค์ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ์ผ๋๋ ๊ธฐ๋ฅ๋ ์์ด์ผ ๋๋ค๊ณ ์๊ฐํด์, ์ถ๊ฐ์ ์ผ๋ก ๋ฃ์๋ค. ์คํ ๋ฆฌ๋ณด๋์ Navigation Controller๋ฅผ ์ถ๊ฐํ๊ณ , ๋ง์ฐฌ๊ฐ์ง๋ก Root View Controller Scene์ ์ญ์ ํ๊ณ View Controller๋ก ๋์ฒดํ๋ค. ๊ทธ๋ผ Main.storyboard์ ์ด 6๊ฐ์ ์ฌ์ด ์์ฑ๋๋ค.
๋จ์ํ ํ๋ฉด์ด ๋ง๊ฒ ๋์ด๊ฐ๋์ง๋ฅผ ํ ์คํธํด๋ณด๊ธฐ ์ํ ์์ ์ด๊ธฐ ๋๋ฌธ์, View Controller ๋ด์ ๋ค์๊ณผ ๊ฐ์ด Label ํ๋๋ง ๋ฃ์ด์คฌ๋๋ฐ ์ค์ ๋ก๋ ์์๋ก ํ๋ฉด์ ๊ตฌ์ฑํด๋ ์๊ด์๋ค.
Controller ํด๋ ๋ด์ MenuController.swift ๋ผ๋ ํ์ผ์ ์๋ก ์์ฑํด์ค ๋ค, ์คํ ๋ฆฌ๋ณด๋์์ ์๋ก ๋ง๋ ์ปจํธ๋กค๋ฌ์ ์์๋ค์ ์ฐ๊ฒฐํด์ค๋ค.
๋ง๋ค์ด์ค ๋ค ์คํ ๋ฆฌ๋ณด๋์์ Side Menu Controller Scene๊ณผ Menu Controller Scene ๋์ ์ฐ๊ฒฐํด์ฃผ๊ณ , ์ฐ๊ฒฐ์ (Segue)์ Identifier๋ฅผ ์ค์ ํด์ค๋ค.
์ฌ๊ธฐ๊น์ง ํ๊ณ , MenuController.swiftํ์ผ์ ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ค๋ค.
// MenuController.swift
import UIKit
class MenuController: UIViewController {
var titleText: String? = nil
@IBOutlet weak var titleLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.text = titleText
}
}
๋ค์ SideMenuController.swift๋ก ๋์์์, ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ค๋ค.
// SideMenuController.swift
import UIKit
class SideMenuController: UIViewController {
var items = ["๊ฒ์ํ1", "๊ฒ์ํ2", "๊ฒ์ํ3", "๊ฒ์ํ4"]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
// ์ถ๊ฐ ์ฝ๋
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "linkSelected" {
let vc = segue.destination as! MenuController
vc.titleText = sender as! String
}
}
}
extension SideMenuController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuItemCell", for: indexPath) as! MenuItemCell
cell.menuLabel?.text = items[indexPath.row]
return cell
}
}
// ์ถ๊ฐ ์ฝ๋
extension SideMenuController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let title = items[indexPath.row]
performSegue(withIdentifier: "linkSelected", sender: title)
}
}
์ฌ๊ธฐ๊น์ง ํ๊ณ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์จ๋ค. ๋ผ๋ฒจ์ด ์๋ ค๋ณด์ผ ์ ์๋๋ฐ, ๊ทธ๋ด ๋ ๋ผ๋ฒจ์ ์ฌ์ด์ฆ๋ฅผ ํค์ฐ๋ฉด ๋๋ค.
3.2 ์ถ๊ฐ ๊ธฐ๋ฅ
๊ฒ์ํ1์ ๊ฐ๋ค๊ฐ ๊ฒ์ํ2๋ก ๊ฐ๊ธฐ ์ํด์ ๋ฉ์ธ ํ๋ฉด์ ๋ค์ ๊ฑฐ์ณค๋ค๊ฐ ๊ฐ๋ ๊ฒ์ด ์๋๋ผ ์ค์ ๊ฒ์ํ ์ดํ๋ค์ฒ๋ผ ๊ฒ์ํ ๋ด์์ ๋ค๋ฅธ ๊ฒ์ํ์ผ๋ก ์ด๋ํ๊ณ ์ถ๋ค๋ฉด, Menu Controller Scene์ ์ผ์ชฝ์ bar button item์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋๊ฐ์ด Menu Controller ๋ด์ ์ผ์ชฝ ๋ฐ ๋ฒํผ์ Side Menu Navigation Controller์ ์ฐ๊ฒฐํด์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค!
๊ทธ ์ธ์ ๋ฉ๋ด ํ๋ฉด์ ์๋จ์ ํ๋ฒํผ์ ์ง์ด๋ฃ์ด ๋ฉ์ธํ๋ฉด์ผ๋ก ๋์๊ฐ๋ ๊ธฐ๋ฅ, ์ฌ์ด๋๋ฉ๋ด์ ๋ฒํผ์ ๋๋ฌ ๊ด์ฌ ๊ฒ์ํ์ผ๋ก ์ค์ ํ๋ ๊ฒ ์ฒ๋ผ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๊พธ๋ ๊ธฐ๋ฅ ๋ฑ์ ์ถ๊ฐ์ ์ผ๋ก ๋ฃ์ด ์์ฑํ ์ต์ข ์์ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค.
์ ์ฒด ์์ค์ฝ๋ : https://github.com/miiinnn23/SideMenuTutorial
'๊ธฐํ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Swift ๋ผ์ด๋ธ๋ฌ๋ฆฌ 'SideMenu'๋ก ์ฌ์ด๋๋ฐ ๊ตฌํํ๊ธฐ - 1 (0) | 2021.08.20 |
---|