我需要幫助。我希望在 fullScreenCover 上顯示詳細視圖,下面的代碼不起作用。通過 RowView 從“dataList”創建模板。使用 NavigationLink 它可以作業。使用 fullScreenCover 這在這里不起作用,資料僅靜態顯示而不是動態顯示。提前感謝您的任何建議。我創建了一個簡單的示例專案來重新創建問題。這是代碼:
import SwiftUI
struct Data: Identifiable {
var id = UUID()
var title: String
var titleSecondScreen: String
}
let dataList = [
Data(title: "Test1", titleSecondScreen: "Second1"),
Data(title: "Test2", titleSecondScreen: "Second2"),
Data(title: "Test3", titleSecondScreen: "Second3"),
Data(title: "Test4", titleSecondScreen: "Second4"),
Data(title: "Test5", titleSecondScreen: "Second5"),
]
struct ContentView: View {
let list: Data
@State private var fullScreen = false
@State var selectedData: Data
var body: some View {
ForEach(dataList) { value in
Button {
fullScreen.toggle()
selectedData = value
} label: {
Text(value.title)
.padding()
}
}
.fullScreenCover(isPresented: $fullScreen) {
fullScreenView(list: dataList[0])
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(list: dataList[0], selectedData: dataList[0])
}
}
struct fullScreenView: View {
let list: Data
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text(list.titleSecondScreen)
.padding()
Button {
presentationMode.wrappedValue.dismiss()
} label: {
Text("Closed FullScreen")
}
}
}
}
struct fullScreenView_Previews: PreviewProvider {
static var previews: some View {
fullScreenView(list: dataList[0])
}
}
這是一個 Github 鏈接:在此處輸入鏈接描述
uj5u.com熱心網友回復:
您可以使用該fullScreen(item:)版本將所選專案發送到FullScreenView.
struct MyData: Identifiable {
var id = UUID()
var title: String
var titleSecondScreen: String
}
let dataList = [
MyData(title: "Test1", titleSecondScreen: "Second1"),
MyData(title: "Test2", titleSecondScreen: "Second2"),
MyData(title: "Test3", titleSecondScreen: "Second3"),
MyData(title: "Test4", titleSecondScreen: "Second4"),
MyData(title: "Test5", titleSecondScreen: "Second5"),
]
struct ContentView: View {
@State private var selectedData: MyData?
var body: some View {
ForEach(dataList) { value in
Button {
selectedData = value
} label: {
Text(value.title)
.padding()
}
}
.fullScreenCover(item: $selectedData) { item in
FullScreenView(item: item)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct FullScreenView: View {
let item: MyData
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text(item.titleSecondScreen)
.padding()
Button {
presentationMode.wrappedValue.dismiss()
} label: {
Text("Close FullScreen")
}
}
}
}
我還做了一些其他的小改動:
- 使用型別名稱的標準 Swift 大寫
- 避免使用該型別
Data,因為它與正常的 SwiftData型別沖突 - 去掉
listContentView 中未使用的引數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/445417.html
上一篇:原因:'從主執行緒訪問后,不得從后臺執行緒執行對布局引擎的修改。
下一篇:在Xcode中列出的選擇器
