Код: Выделить всё
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")
}
}
Шаги для воспроизведения:
- Нажмите на некоторые карточки, чтобы открыть их листы.
- Нажмите на кнопку настроек, чтобы открыть лист настроек.
- Быстро переключайтесь между нажатиями карточки и кнопку настроек.
- После нескольких попыток вы можете увидеть содержимое листа карточек, отображаемое при открытии листа настроек.
Я сталкивался с этой проблемой в нескольких проектах, поэтому не думаю, что она специфична. для этой конкретной реализации. Мы будем очень признательны за любую информацию или обходные пути!
Вы должны делать это очень быстро, например, открывать лист, как только закрывается другой. Я также использую настоящее устройство, если это имеет значение.
Подробнее здесь: https://stackoverflow.com/questions/787 ... een-sheets
Мобильная версия