Средство выбора с SegmentedPickerStyle () не обновляет динамические заголовки в SwiftUI - PullRequest
0 голосов
/ 03 октября 2019

Пытаясь создать простой элемент управления выбором дня в SwiftUI, который имеет стиль выбора Picker с сегментированным набором на 3 дня (первоначально вчера, сегодня, завтра) вместе с кнопками шеврона для перехода назад или вперед во времени, я застрял там, гдетекстовые метки для Picker странным образом обновляются.

Если я увеличиваю переменную состояния, все три текстовых метки средства выбора обновляются, как ожидается. Если я уменьшу переменную состояния, обновятся только первые две текстовые метки.

Вот упрощенный пример, показывающий проблему. Я использую версию Xcode 11.1 (11A1027) и симулятор iOS 13.1. Если вы продолжаете нажимать кнопку «Далее», все три метки обновляются должным образом, но нажимаются «Предыдущая», а третья метка не обновляется. Нажмите «Далее» еще раз, и все три вернутся к отражению правильного состояния.

Мое реальное приложение использует ForEach итерацию по модели данных, включающей массив дат, но этот упрощенный пример демонстрирует то же поведение.

    struct ContentView: View {

    @State var middleValue = 2
    @State var selectedValue = 1

    var body: some View {
        VStack {
            Picker("Item", selection: $selectedValue) {
                Text("\(middleValue - 1)").tag(0)
                Text("\(middleValue)").tag(1)
                Text("\(middleValue + 1)").tag(2)
            }
            .pickerStyle(SegmentedPickerStyle())

            HStack {
                Button("Previous") {
                    self.middleValue -= 1
                }
                Spacer()
                Button("Next") {
                    self.middleValue += 1
                }
            }
            Spacer()
        }
        .padding()
    }
}

Есть идеи? Тем временем я создал свой собственный элемент управления сегментами, используя кнопки с модификатором, который обеспечивает похожий пользовательский интерфейс, но я озадачен, почему это не работает с SegmentedPickerStyle от Picker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...