diff --git a/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift b/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift index b527dfb28..b1208f547 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift @@ -24,7 +24,7 @@ struct PollHistory: View { var body: some View { VStack { SegmentedPicker( - segments: PollHistoryMode.allCases.map { ($0.segmentTitle, $0) }, + segments: PollHistoryMode.allCases, selection: $viewModel.mode, interSegmentSpacing: 14 ) @@ -79,8 +79,8 @@ struct PollHistory: View { } } -private extension PollHistoryMode { - var segmentTitle: String { +extension PollHistoryMode: CustomStringConvertible { + var description: String { switch self { case .active: return VectorL10n.pollHistoryActiveSegmentTitle diff --git a/RiotSwiftUI/Modules/Room/PollHistory/View/SegmentedPicker.swift b/RiotSwiftUI/Modules/Room/PollHistory/View/SegmentedPicker.swift index 0293aa99b..d669d67ad 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/View/SegmentedPicker.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/View/SegmentedPicker.swift @@ -16,14 +16,14 @@ import SwiftUI -struct SegmentedPicker: View { - private let segments: [(String, Tag)] - private let selection: Binding +struct SegmentedPicker: View { + private let segments: [Segment] + private let selection: Binding private let interSegmentSpacing: CGFloat @Environment(\.theme) private var theme - init(segments: [(String, Tag)], selection: Binding, interSegmentSpacing: CGFloat) { + init(segments: [Segment], selection: Binding, interSegmentSpacing: CGFloat) { self.segments = segments self.selection = selection self.interSegmentSpacing = interSegmentSpacing @@ -31,18 +31,18 @@ struct SegmentedPicker: View { var body: some View { HStack(spacing: interSegmentSpacing) { - ForEach(segments, id: \.1) { text, tag in - let isSelectedSegment = tag == selection.wrappedValue + ForEach(segments, id: \.hashValue) { segment in + let isSelectedSegment = segment == selection.wrappedValue Button { - selection.wrappedValue = tag + selection.wrappedValue = segment } label: { - Text(text) + Text(segment.description) .font(isSelectedSegment ? theme.fonts.headline : theme.fonts.body) .underline(isSelectedSegment) } .accentColor(isSelectedSegment ? theme.colors.accent : theme.colors.primaryContent) - .accessibilityLabel(text + (isSelectedSegment ? "-selected" : "")) + .accessibilityLabel(segment.description + (isSelectedSegment ? "-selected" : "")) } } } @@ -52,10 +52,19 @@ struct SegmentedPicker_Previews: PreviewProvider { static var previews: some View { SegmentedPicker( segments: [ - ("Segment 1", "1"), - ("Segment 2", "2") + "Segment 1", + "Segment 2" ], - selection: .constant("1"), + selection: .constant("Segment 1"), + interSegmentSpacing: 14 + ) + + SegmentedPicker( + segments: [ + "Segment 1", + "Segment 2" + ], + selection: .constant("Segment 2"), interSegmentSpacing: 14 ) }