Неправильный вид отображается при быстром переключении между листамиIOS

Программируем под IOS
Ответить
Anonymous
 Неправильный вид отображается при быстром переключении между листами

Сообщение Anonymous »

У меня наблюдается нестабильное поведение листов SwiftUI в моем приложении. У меня есть простой вид с карточками и кнопкой настроек, которые открывают разные листы. Вот минимальный воспроизводимый пример:

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

import SwiftUI

struct Card: Identifiable {
let id = UUID()
let text: String
}

struct ContentView: View {
@State private var showSettings = false
@State private var selectedCard: Card?

let cards = [
Card(text: "Card 1"),
Card(text: "Card 2"),
Card(text: "Card 3"),
Card(text: "Card 4"),
Card(text: "Card 5")
]

var body: some View {
NavigationView {
ScrollView {
VStack(spacing: 20) {
ForEach(cards) { card in
CardView(text: card.text)
.onTapGesture {
selectedCard = card
}
}
}
.padding()
}
.navigationTitle("My Cards")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
showSettings = true
}) {
Image(systemName: "gear")
}
}
}
.sheet(isPresented: $showSettings) {
SettingsView()
}
.sheet(item: $selectedCard) { card in
Text("You tapped \(card.text)")
.padding()
}
}
}
}

struct CardView: View {
let text: String

var body: some View {
Text(text)
.frame(maxWidth: .infinity)
.padding()
.background(Color.blue.opacity(0.1))
.cornerRadius(10)
}
}

struct SettingsView: View {
var body: some View {
Text("Settings")
.navigationTitle("Settings")
}
}
При быстром нажатии между карточками и кнопкой настроек иногда на листе настроек отображается «Вы нажали карту X» вместо фактического представления настроек. Это не связано с неправильным нажатием, поскольку кнопка настроек и карточки расположены далеко друг от друга на экране.
Шаги для воспроизведения:
  • Нажмите на некоторые карточки, чтобы открыть их листы.
  • Нажмите на кнопку настроек, чтобы открыть лист настроек.
  • Быстро переключайтесь между нажатиями карточки и кнопку настроек.
  • После нескольких попыток вы можете увидеть содержимое листа карточек, отображаемое при открытии листа настроек.
Известна ли это проблема с листами SwiftUI? Может ли это быть связано с каким-то механизмом кэширования? Как я могу гарантировать, что правильное содержимое листа всегда отображается, даже при быстром переключении между разными листами?
Я сталкивался с этой проблемой в нескольких проектах, поэтому не думаю, что она специфична. для этой конкретной реализации. Мы будем очень признательны за любую информацию или обходные пути!
Вы должны делать это очень быстро, например, открывать лист, как только закрывается другой. Я также использую настоящее устройство, если это имеет значение.

Подробнее здесь: https://stackoverflow.com/questions/787 ... een-sheets
Ответить

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

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

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

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

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