Что заставляет сборщиков мерцание при изменении отбораIOS

Программируем под IOS
Ответить
Anonymous
 Что заставляет сборщиков мерцание при изменении отбора

Сообщение Anonymous »

Это воспроизводимый код (есть категория, и каждая категория может иметь опцию (ы): < /p>

Код: Выделить всё

import SwiftUI

struct ContentView: View {
enum Category: String, CaseIterable, Identifiable {
case typeA, typeB, typeC
var id: Self { self }
}

enum Option: String, CaseIterable, Identifiable {
case a1, a2, b1, b2, c1, c2
var id: Self { self }
}

@State private var selectedCategory: Category = .typeA
@State private var selectedOption: Option = .a1

var availableOptions: [Option] {
switch selectedCategory {
case .typeA: return [.a1, .a2]
case .typeB: return [.b1, .b2]
case .typeC: return [.c1, .c2]
}
}

var body: some View {
Form {
Section(header: Text("Selection")) {
HStack {
Picker("", selection: $selectedCategory) {
ForEach(Category.allCases) { category in
Text(category.rawValue.capitalized).tag(category)
}
}
.labelsHidden()
.pickerStyle(.menu)

Spacer()

Picker("", selection: $selectedOption) {
ForEach(availableOptions) { option in
Text(option.rawValue.uppercased()).tag(option)
}
}
.labelsHidden()
.pickerStyle(.menu)
}
}
}
.onChange(of: selectedCategory, { oldValue, newValue in
if !availableOptions.contains(selectedOption), let firstOption = availableOptions.first {
selectedOption = firstOption
}
})
}
}

#Preview {
ContentView()
}
А и вот результат:

Почему оба текста. Заполнить опционер после того, как выбранное значение в категории, выпивчик, изменился (в настоящее время я делаю это в методе OnChange )? Это происходит только на моем iPhone 14 с установленным iOS 18.5. Я удалил все и оставил только один сборщик типа .menu с тремя текстовыми полями, и он по -прежнему ведет себя одинаково. Таким образом, кажется, что это либо мой телефон, либо сама операционная система. Я надеюсь, что кто -то сможет это подтвердить.

Подробнее здесь: https://stackoverflow.com/questions/797 ... on-changes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»