Swiftui Form View跳出错误 [英] Swiftui Form View jump up bug
问题描述
遵循 Raywenderlich教程时,我遇到了问题.每次我单击一个项目时,表单视图都会自动向上跳一点.这是一个错误吗?反正有解决办法吗? 代码如下.在Contentview中,我使用了GroupedListStyle()列出所有项目. 我的xcode版本是11.2,Swift 5.
I had a problem when following Raywenderlich Tutorial. The form view will automatically jump upward a little bit every time i clicked an item. Is this a bug? Is there anyway to solve it? The code is below. And in Contentview, i used a GroupedListStyle() to list all the items. My xcode version is 11.2, Swift 5.
下面是TaskEditingView.swift
Below is TaskEditingView.swift
import SwiftUI
struct TaskEditingView: View {
@Binding var task: Task
var body: some View {
Form {
TextField("Name", text:$task.name)
Toggle("Completed", isOn: $task.completed)
}
}
}
struct TaskEditingView_Previews: PreviewProvider {
static var previews: some View {
TaskEditingView(task: .constant(Task(name: "TO DO")))
}
}
下面是ContentView.swift
Below is ContentView.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var taskStore: TaskStore
@State var modalIsPresented = false
var body: some View {
NavigationView {
List {
ForEach(taskStore.tasks) { index in
RowView(task: self.$taskStore.tasks[index])
}
.onMove { sourceIndices, destinationIndex in
self.taskStore.tasks.move(
fromOffsets: sourceIndices,
toOffset: destinationIndex
)
}
.onDelete { indexSet in
self.taskStore.tasks.remove(atOffsets: indexSet)
}
}
.navigationBarTitle("Tasks")
.navigationBarItems(
leading: EditButton(),
trailing:
Button(
action: { self.modalIsPresented = true }
) {
Image(systemName: "plus")
}
)
}
.sheet(isPresented: $modalIsPresented) {
NewTaskView(taskStore: self.taskStore)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView( taskStore: TaskStore() )
}
}
下面是RowView.swift
Below is RowView.swift
import SwiftUI
struct RowView: View {
@Binding var task: Task
let checkmark = Image(systemName: "checkmark")
var body: some View {
NavigationLink(
destination: TaskEditingView(task: $task)
) {
if task.completed {
checkmark
} else {
checkmark.hidden()
}
Text(task.name)
.strikethrough(task.completed)
}
}
}
struct RowView_Previews: PreviewProvider {
static var previews: some View {
RowView(
task: .constant( Task(name: "To Do") )
)
}
}
ContentView.swift-> RowView.swift-> TaskEditingView.swift
ContentView.swift -> RowView.swift -> TaskEditingView.swift
推荐答案
如果在表单内部使用节",则跳过的bug消失了. 如果您使用空的节的页眉和页脚,应该看起来像您一样.
If you use a Section Inside of a form, the jumping bug is gone. If you use empty header and footer of a section, it should be look like you do it.
Form{
Section(header: Text(""), footer: Text(""), content: {
Text(...)
Toggle(...)
})
}
这篇关于Swiftui Form View跳出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!