[英]Remove Separator Line from Form in SwiftUI
我有一個在 SwiftUI 中創建的 static 表(或 SwiftUI 中的表單),我很滿意每個表的工作方式,除了分隔兩個 static 單元格的行。 見下圖。
我嘗試了幾種方法,但似乎沒有任何效果。 你可以看到他們在那里被注釋掉了。
struct Settings_CheckedView: View {
@Environment(\.managedObjectContext) private var viewContext
@Environment(\.settings) private var settings
@State private var picker1 = 2
@State private var picker2 = 2
//Tried this first, doesn't seem to affect it.
/*init() {
UITableView.appearance().separatorStyle = .none
}*/
var body: some View {
Form {
Section(header: Text("COMPLETED ITEM BEHAVIOR")) {
VStack {
HStack {
Text("Auto-Delete Completed Items")
Spacer()
}
Picker("", selection: $picker1) {
Text("Off").tag(0)
Text("Immediately").tag(1)
Text("Delay").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
.onChange(of: picker1, perform: { value in
settings.autoDeleteSegment = Int16(value)
viewContext.trySave("Updating auto-delete segment value in Settings", loc: "Settings_CheckedView")
})
}
VStack {
HStack {
Text("Delay Time Interval")
Spacer()
}
Picker("", selection: $picker2) {
Text("5 mins").tag(0)
Text("15 mins").tag(1)
Text("1 Hr").tag(2)
Text("24 Hrs").tag(3)
}
.pickerStyle(SegmentedPickerStyle())
.onChange(of: picker2, perform: { value in
settings.deleteDelaySegment = Int16(value)
self.viewContext.trySave("Updating delay time interval segment value in Settings", loc: "Settings_CheckedView")
})
}
.isHidden(picker1 == 2 ? false: true)
}
}
.navigationBarTitle(Text("Completed Items"))
.navigationBarColor(UIColor.ezDarkAquaSet)
.onAppear(perform: {
self.picker1 = Int(settings.autoDeleteSegment)
self.picker2 = Int(settings.deleteDelaySegment)
//Tried this second, also no affect
//UITableView.appearance().separatorStyle = .none
})
.listSeparatorStyle(style: .none) //Last try, also no affect, see code for this below.
}
}
extension View {
func listSeparatorStyle(style: UITableViewCell.SeparatorStyle) -> some View {
ModifiedContent(content: self, modifier: ListSeparatorStyle(style: style))
}
}
struct ListSeparatorStyle: ViewModifier {
let style: UITableViewCell.SeparatorStyle
func body(content: Content) -> some View {
content
.onAppear() {
UITableView.appearance().separatorStyle = self.style
}
}
}
因此,您基本上可以從上到下看到我嘗試過的內容,但沒有任何效果。 它們基本上都是實現.separatorStyle
的不同方式。 當我嘗試在 UIKit 中做這樣的事情時,這被稱為 static UITableView,這正是我要刪除它的方法。 但我不確定我在這里做錯了什么。 我在網上找到的所有示例都是引用列表而不是表單,所以也許這就是它不起作用的原因。 有什么建議么?
只需用另一個 VStack 將 2 個 VStack 包裹在 Section 內,該行就會消失
...
Section(header: Text("COMPLETED ITEM BEHAVIOR")) {
VStack {
VStack {
HStack {
Text("Auto-Delete Completed Items")
Spacer()
}
...
}
VStack {
HStack {
Text("Delay Time Interval")
Spacer()
}
...
}
}
}
...
將.listRowSeparator(.hidden)
添加到每個組件
TextField("Enter first name", text: $firstName)
.textFieldStyle(.roundedBorder)
.listRowSeparator(.hidden)
TextField("Enter last name", text: $lastName)
.textFieldStyle(.roundedBorder)
.listRowSeparator(.hidden)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.