ios - 在 Menu() 中使用多个 if 条件
问题描述
我正在尝试Menu()
在 SwiftUI 中构建一个至少应该有两个 if 条件的东西。
一旦我实现了第二个 if 条件,代码就不再编译。
这是一个 SwiftUI-Bug,还是有人知道我做错了什么?
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")
})
}
}
}
}
推荐阅读
- reactjs - 将 React App 从 Codesandbox 部署到 Github Pages
- python - 处理失去精度的numpy数组
- linux - 如何在 bash 中执行命令而不记录到历史记录?
- python - 从 Flask 中的 @app.route 更新全局字典/列表
- vim - 如何围绕程序创建包装器?
- php - 使用php将动态表单输入插入mysql数据库
- c# - 如何覆盖在某些测试中使用 IWebHostBuilder.ConfigureTestServices 模拟的服务
- c++ - c++ 在实现模板化嵌套类时遇到问题
- python - Python根据条件修剪空间
- picocli - 为什么 picocli 需要 ArgGroup 中的 args,即使默认多重性为 0..1?