์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- RxSwift
- swift
- realm
- tableView
- SwiftUI
- BOJ
- Kuring
- arkit
- Xcode
- designpattern
- raywenderlich
- visionOS
- ํจ์คํธ์บ ํผ์ค
- Flutter
- node.js
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- combine
- UIKit
- CollectionView
- ๋ฐฑ์ค
- ios
- rxcocoa
- MVVM
- XCTest
- SnapKit
- Swfit
- Lv2
- reactorkit
- TCA
- Today
- Total
lgvv98
[SwiftUI] List Row ์ ํํ๊ธฐ(TableView didSelectRow) ๋ณธ๋ฌธ
[SwiftUI] List Row ์ ํํ๊ธฐ(TableView didSelectRow)
๐ฅ ์บ๋ฟ๋งจ 2022. 5. 30. 20:50List Row ์ ํํ๊ธฐ(TableView didSelectRow)
โ ์ค๋๋ง์ด๋ค! ์ ๋ชฉ์ด ์ฐธ UIKit์ค๋ฝ๋ค.
์ ๋ชฉ์ ์ด๋ ๊ฒ ์์ฑํ๊ฒ ๋ ์ด์ ๋ก๋ ๋ด๊ฐ 1๋ ์ ๋ UIKit์ ์ฌ์ฉํ๋ฉด์ ์ด๋ฏธ ์ฌ๊ณ ๊ฐ ์ฌ๊ธฐ์ ์ต์ํด์ง ์ํ์ธ๋ฐ, SwiftUI๋ก List์ Row(UIKit์์ cell)์ ์ ํํ๋ ๋ก์ง์ ์์ฑํ๋๊ฒ ์ ์๋์๋ค.๊ทธ๋์ ๋ด๊ฐ ๊ตฌ๊ธ์ ์ ํค์๋๋ก ๊ฒ์ํ๋๋ฐ, ๋ฑํ ๋ง์ ๋๋๊ฒ ์๋ํ๋์ ์ง์ ์ ๋ฆฌํ๋ ค๊ณ ํฌ์คํ ํจ.
์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ฐ, ์ด๊ฒ ์ฐธ ์ด๋ ค์ ์.
์ฐ์ UIKit์ ์ฌ์ฉํ๋ค๋ณด๋ tableView์์๋ UITableViewDelegate๋ฅผ ์์๋ฐ์์ didSelectRow๋ฅผ ๊ตฌํํ๋ฉด ๋์๋ค.
๊ทธ๋ฌ๋๊น ์ด์ ๋น์ทํ๊ฒ List์ Row์ onTapGesture๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐ!!
โ ์๋ชป๋ case
struct didSelectRow: View {
var body: some View {
List {
ForEach((0...10), id: \.self) { index in
Text("\(index)")
.onTapGesture {
print("\(index)")
}
}
}
}
}
struct didSelectRow: View {
var body: some View {
List {
ForEach((0...10), id: \.self) { index in
Text("\(index)")
}.onTapGesture {
print("didTap")
}
}
}
}
์์ ๋๊ฐ์ง ๊ฒฝ์ฐ์๋ Text ์์ญ์๋ง touch๊ฐ ๋์ด์ row์ ์ฒด๋ฅผ ์ปค๋ฒํ ์ ์์.
โ ๊ทธ๋ ๋ค๋ฉด List ์์ฒด์ onTapGesture๋ฅผ ๋ถ์ด๊ณ ํด๋นํ๋ ์ ๋ณด๋ฅผ ์ป์ด๋ณผ๊น?
struct didSelectRow: View {
var body: some View {
List {
ForEach((0...10), id: \.self) { index in
Text("\(index)")
}
}.onTapGesture {
print("didTap")
}
}
}
์ด๋ ๊ฒ ์์ฑํ๋ฉด List์ ์ฒด๊ฐ ์ ํ๋๋ค. ํ์ง๋ง row์์ ํด๋นํ๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์์.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
โ ์ฌ๋ฐ๋ฅธ case
import SwiftUI
struct didSelectRow: View {
var body: some View {
NavigationView {
List {
ForEach((0...10), id: \.self) { index in
NavigationLink {
secondView(index: index)
// nextView(index: index)
} label: {
Text("\(index)")
}
// Text("\(index)")
}
}
}
}
func secondView(index: Int) -> some View {
var body: some View {
Text("\(index)")
}
return body
}
}
struct nextView: View {
let index: Int!
var body: some View {
Text("\(index)")
}
}
NavigationView๋ก ๋ฌถ์ด์ค ๋ค์์ NavigationLink๋ฅผ ํตํด์ ์ฌ์ฉํ๋ค!
(์ค์) ๋ค๋น๊ฒ์ด์ ๋ทฐ๋ก ๋ฌถ๋๋ค. -> ์์ผ๋ฉด NavigationLink ์๋์ํจ
์์ ์ฝ๋์์๋ ์ถ๊ฐ๋ก ๋ทฐ๋ฅผ func์ผ๋ก๋ ๊ตฌ์ฑํด ๋ณด์๋ค!
โ NavigationLink์ ๋ํด์ ์ข ๋ ์์๋ณด์
NavigationLink {
// action
} label: {
// ๋ชจ์!
}
๋ฒํผ์ด๋ ๋๊ฐ๋ค. label์ด ๊ฒ๋ชจ์์ด ๋๋ฏ๋ก ์ด ๋ชจ์์ ํด๋ฆญํ๋ฉด action์ ์ํํ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋๊น ๋ชจ์์ด row๊ฐ ๋์ด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค!!
์ด์ ํด๊ฒฐํด์ผํ ๋ฌธ์ ๊ฐ ํ๋ ๋จ์๋ค. ๋ฐ๋ก ๊ฐ row์ accessory ๋ถ๋ถ ์ด๋ฅผ ์์ ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํฌ์คํ ์์ ์์๋ณด์!
2022.05.31 - [iOSํ๋ก์ ํธ/Kuring] - [SwiftUI] List accessory (feat. disclosure indicator)
'iOSํ๋ก์ ํธ > โ๏ธ Kuring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] UIActivityViewController๋ฅผ SwiftUI๋ก (0) | 2022.05.31 |
---|---|
[SwiftUI] List accessory (feat. disclosure indicator) (0) | 2022.05.31 |
[iOS] Thread 1: "Attempt to insert non-property list object () for key ~ (0) | 2022.05.05 |
[iOS] tableViewCell Swipe Action ๊ตฌํํ๊ธฐ (0) | 2022.05.05 |
[iOS] Indicator customizing (feat. Lottie) (0) | 2022.04.30 |