SwiftUI menu (feat. Picker)
목차
- 결과 스크린샷
- 코드
결과 스크린샷
코드
설명보다는 코드가 간결해서 코드로 !
import SwiftUI
struct MenuPickerView: View {
@State private var selection: SelectionType? = nil
enum SelectionType: Identifiable {
var id: String { self.title }
case option1
case option2
case sectionSingle
case sectionItem1
case sectionItem2
case pickerItem1
case pickerItem2
var title: String {
switch self {
case .option1: return "섹션 없는 아이템 1"
case .option2: return "섹션 없는 아이템 2"
case .sectionSingle: return "섹션 있는 단독 아이템"
case .sectionItem1: return "섹션 있는 아이템 1"
case .sectionItem2: return "섹션 있는 아이템 2"
case .pickerItem1: return "피커 아이템 1"
case .pickerItem2: return "피커 아이템 2"
}
}
}
var body: some View {
NavigationStack {
Text(selection?.title ?? "선택된 옵션 없음")
.toolbar {
ToolbarItem(placement: .principal) {
Text("네비게이션")
}
ToolbarItem(placement: .topBarTrailing) {
Menu {
Button(SelectionType.option1.title) { selection = .option1 }
Button(SelectionType.option2.title) { selection = .option2 }
Section {
Button(SelectionType.sectionSingle.title) { selection = .sectionSingle }
}
Section {
Button(SelectionType.sectionItem1.title) { selection = .sectionItem1 }
Button(SelectionType.sectionItem2.title) { selection = .sectionItem2 }
}
Picker(selection: $selection) {
let items: [SelectionType] = [.pickerItem1, .pickerItem2]
ForEach(items, id: \.title) { item in
Text(item.title)
}
} label: {
Text("피커 아이템 선택")
}
} label: {
Image(systemName: "ellipsis.circle")
}
}
}
}
}
}
'apple > SwiftUI, Combine' 카테고리의 다른 글
[SwiftUI] ViewModifier (0) | 2022.06.02 |
---|---|
[SwiftUI] LazyVGrid (0) | 2022.05.25 |
[SwiftUI] Picker, segmentedStyle (feat. enum CaseIterable) (0) | 2022.05.23 |
SwiftUI Toast, popup (0) | 2022.05.23 |
[SwiftUI] TextField, SecureField (0) | 2022.05.23 |