【发布时间】:2019-11-11 14:56:30
【问题描述】:
我正在构建一个应用程序来管理虚拟数据中心(服务器、防火墙策略、负载平衡器......)。我有两个部分(使用标签视图)。一个显示您在数据中心中创建的所有元素的列表。另一部分是创建新元素。如果我们启动应用程序,我们会从列表部分开始。然后我尝试创建一个新服务器。为此,我转到创建部分,单击服务器并选择一个大小,这是我无法解决的前两个问题:
- 为什么选择器的选项会小跳到屏幕顶部?如何删除它?
- 屏幕顶部与选择器选项之间存在太多空间。怎么能去掉呢?
我遇到的最后一个问题是,创建服务器后,我返回创建部分,我想直接进入列表部分。我该怎么做?
在这里查看我遇到的问题/问题的基本代码。提前感谢您的帮助!
import SwiftUI
struct ContentView: View {
@State private var selectedTab = 1
var body: some View {
TabView(selection: $selectedTab){
CreateView()
.tabItem {
Image(systemName: "plus")
Text("Create")
}.tag(0)
ListView()
.tabItem {
Image(systemName: "cloud")
Text("List")
}.tag(1)
}
}
}
struct CreateView: View {
var body: some View {
VStack{
NavigationView{
List{
NavigationLink(destination: CreateServerView()){
Text("Server")
}
Text("Firewall Policy")
Text("Load Balancer")
}
.navigationBarTitle("Select the element you want to create", displayMode: .inline)
}
}
}
}
struct ListView: View {
var body: some View {
NavigationView{
List{
Section(header: Text("Servers")){
Text("Server 1")
Text("Server 2")
}
Section(header: Text("Firewall policies")){
Text("Firewall 1")
Text("Firewall 2")
}
}
.navigationBarTitle("My virtual datacenter", displayMode: .large)
}
}
}
struct CreateServerView: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@State private var name: String = ""
@State private var selectedFixServer = 0
@State private var serverType = ["S", "M", "L", "XL"]
var body: some View {
NavigationView {
Form {
Section(header: Text("Name of the server")){
TextField("Name", text: $name)
}
Picker(selection: $selectedFixServer, label: Text("Size")) {
ForEach(0 ..< serverType.count) {
Text(self.serverType[$0])
}
}
}
.navigationBarTitle("")
.navigationBarHidden(true)
}
.navigationBarTitle("Create Server")
.navigationBarBackButtonHidden(true)
.navigationBarItems(
leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}) {
Text("Cancel")
},
trailing:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}) {
Text("Create")
}
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
【问题讨论】:
-
您只需要使用这样的变体,而不是 .pickerStyle(SegmentedPickerStyle()) 例如?
标签: swiftui