我在做一个旅行日记应用。当我写下我所访问的城市的详细信息时,我会在城市名称下面看到一个白色的矩形,而不是我所写的。我想看看我在名字下面写了什么。
这就是我写的例子:
这是我不想看到的结果:
这是我现在的代码。有人能帮我吗
struct LandingView: View {
@State private var oldLandingName: String = ""
@State private var newLandingName: String = ""
@State private var isAddingLanding = false
@State private var landings: [String] = []
@State private var isEditing = false
@State private var landingDetails: [String: [String]] = [:]
@State private var newLandingDetails: String = ""
var body: some View {
NavigationView {
ZStack {
Color.blue.ignoresSafeArea()
Circle()
.scale(1.7)
.foregroundColor(.yellow.opacity(0.60))
.padding()
Circle()
.scale(1.3)
.foregroundColor(.blue.opacity(0.50))
.padding()
VStack {
HStack {
Text("Add Your Travels")
.bold()
Spacer()
Button(action: {
isAddingLanding = true
}) {
Image(systemName: "plus")
.resizable()
.frame(width: 20, height: 20)
.foregroundColor(.white)
}
}
.padding(.horizontal)
List(landings, id: \.self) { landing in
Text(landing).bold()
.foregroundColor(.white)
.listRowBackground(Color.clear)
.listRowSeparatorTint(.blue)
.onTapGesture {
self.isEditing = true
self.oldLandingName = landing
self.newLandingName = landing
}
if let details = landingDetails[landing] {
ForEach(details, id: \.self) { detail in
Text(detail)
.foregroundColor(.white)
}
}
}
.listStyle(.plain)
}
}
.navigationBarTitle(Text("Landings!"))
.fullScreenCover(isPresented: $isAddingLanding, onDismiss: {}) {
VStack {
TextField("Where did you go? \(newLandingName)", text: $newLandingName)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
TextField("Details", text: $newLandingDetails)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Add") {
if !newLandingName.isEmpty {
landings.append(newLandingName)
// newLandingName = ""
if !landingDetails.keys.contains(newLandingName) {
landingDetails[newLandingName] = []
}
if let details = landingDetails[newLandingName], !newLandingDetails.isEmpty {
landingDetails[newLandingName]?.append(newLandingDetails)
// newLandingDetails = ""
}
newLandingName = ""
newLandingDetails = ""
}
isAddingLanding = false
}
Color.blue.ignoresSafeArea()
}
}
.fullScreenCover(isPresented: $isEditing, onDismiss: {}) {
VStack {
TextField("", text: $newLandingName)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Add Photos") {}
Spacer()
Button("Write about it") {
if !newLandingName.isEmpty {
if let idx = landings.firstIndex(where: { $0 == $oldLandingName.wrappedValue }) {
self.landings[idx] = newLandingName
if !landingDetails.keys.contains(newLandingName) {
landingDetails[newLandingName] = []
}
}
}
isEditing = false
}
Color.blue.ignoresSafeArea()
}
// .padding()
}
}
}
}
1条答案
按热度按时间6g8kf2rb1#
我认为你应该先调试你的代码。所以你引用的那个,是一个空白白色格,它不是空白的,它有一个详细的值,你在第二个循环中添加到代码中。如果从代码中删除这些行。应该可以的