Ios 在菜单()中使用多个if条件
我正在尝试在SwiftUI中构建一个Ios 在菜单()中使用多个if条件,ios,swift,swiftui,Ios,Swift,Swiftui,我正在尝试在SwiftUI中构建一个菜单(),它至少应该有两个if条件 一旦我实现了第二个if条件,代码就不再编译了 这是一个SwiftUI错误,还是有人知道我做错了什么 struct ContentView: View { var departmentList = ["Department 1", "Department 2", "Department 3", "Department 4", "Depr
菜单()
,它至少应该有两个if条件
一旦我实现了第二个if条件,代码就不再编译了
这是一个SwiftUI错误,还是有人知道我做错了什么
struct ContentView: View {
var departmentList = ["Department 1", "Department 2", "Department 3", "Department 4", "Deprtment 5"]
var salesDepartmentList = ["SalesDepartment 1", "SalesDepartment 2", "SalesDepartment 3"]
var itDepartmentList = ["ITDepartment 1", "ITDepartment 2", "ITDepartment 3"]
var body: some View {
if #available(iOS 14.0, *) {
VStack {
Menu("Menu") {
Menu("Departments") {
ForEach(departmentList, id: \.self) { department in
if department == "Department 1" {
Menu(department) {
ForEach(salesDepartmentList, id: \.self) { salesDepartment in
Button(salesDepartment, action: {
print("Do sales stuff")
})
}
}
}
// else if department == "Department 2" {
Menu(department) {
ForEach(itDepartmentList, id: \.self) { itDepartment in
Button(itDepartment, action: {
print("Do IT stuff")
})
}
}
// }
}
}
}
}
}
}
}
对于编译器来说,这就变得复杂了。解决方案是通过分离来简化(总是有用的) 以下是可能的方法。使用Xcode 12.1/iOS 14.1进行测试(您可以进一步简化)
struct ContentView: View {
var departmentList = ["Department 1", "Department 2", "Department 3", "Department 4", "Deprtment 5"]
var salesDepartmentList = ["SalesDepartment 1", "SalesDepartment 2", "SalesDepartment 3"]
var itDepartmentList = ["ITDepartment 1", "ITDepartment 2", "ITDepartment 3"]
var body: some View {
if #available(iOS 14.0, *) {
VStack {
Menu("Menu") {
Menu("Departments") {
ForEach(departmentList, id: \.self) { department in
if department == "Department 1" {
salesSubmenu(for: department)
}
else if department == "Department 2" {
itSubmenu(for: department)
}
}
}
}
}
}
}
func salesSubmenu(for department: String) -> some View {
Menu(department) {
ForEach(salesDepartmentList, id: \.self) { salesDepartment in
Button(salesDepartment, action: {
print("Do sales stuff")
})
}
}
}
func itSubmenu(for department: String) -> some View {
Menu(department) {
ForEach(itDepartmentList, id: \.self) { itDepartment in
Button(itDepartment, action: {
print("Do IT stuff")
})
}
}
}
}