SwiftUI:如何将 NavigationLink 在表单中居中
SwiftUI: How to center NavigationLink inside of a Form
抱歉,如果这是 asked/answered;我正在尝试在表单内显示 NavigationLink,但希望它居中。我可以用一个使用 HStack 和 Spacers 的 Button 来做到这一点; NavigationLink 有点顽固:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
Form {
HStack {
//BUTTON CENTERS WITH SPACERS
Spacer()
Button(action: {}, label: {
Text("Button")
})
Spacer()
}
HStack {
//NAVIGATIONLINK IGNORES SPACERS
Spacer()
NavigationLink(
destination: Text("Destination"),
label: {
Text("Navigate")
})
Spacer()
}
}
}
}
}
我喜欢这样做的一种方法是创建一个空导航 link。
@State var someBoolBinding = false
//Body
NavigationLink(destination: YourDestView(), isActive: $someBoolBinding) {}
然后创建一个带有切换按钮的自定义按钮。
Button("Go Here") {
someBoolBinding.toggle()
}
您可以使用任何按钮,甚至是自定义按钮,甚至是 onTapGesture,只需更改该布尔值即可。从那里开始,它就像将任何其他元素居中一样简单,而且您不必依赖呈现给您的“导航 Link”样式。或者你可以这样做。
NavigationLink(destination: RegisterWithEmailView(), isActive: $someBoolBinding) {
Button("Go To some View", action: {
someBoolBinding.toggle()
})
}
抱歉,如果这是 asked/answered;我正在尝试在表单内显示 NavigationLink,但希望它居中。我可以用一个使用 HStack 和 Spacers 的 Button 来做到这一点; NavigationLink 有点顽固:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
Form {
HStack {
//BUTTON CENTERS WITH SPACERS
Spacer()
Button(action: {}, label: {
Text("Button")
})
Spacer()
}
HStack {
//NAVIGATIONLINK IGNORES SPACERS
Spacer()
NavigationLink(
destination: Text("Destination"),
label: {
Text("Navigate")
})
Spacer()
}
}
}
}
}
我喜欢这样做的一种方法是创建一个空导航 link。
@State var someBoolBinding = false
//Body
NavigationLink(destination: YourDestView(), isActive: $someBoolBinding) {}
然后创建一个带有切换按钮的自定义按钮。
Button("Go Here") {
someBoolBinding.toggle()
}
您可以使用任何按钮,甚至是自定义按钮,甚至是 onTapGesture,只需更改该布尔值即可。从那里开始,它就像将任何其他元素居中一样简单,而且您不必依赖呈现给您的“导航 Link”样式。或者你可以这样做。
NavigationLink(destination: RegisterWithEmailView(), isActive: $someBoolBinding) {
Button("Go To some View", action: {
someBoolBinding.toggle()
})
}