【问题标题】:SwiftUI binding boolean if statement (Cannot convert value of type 'Binding<Bool>' to expected condition type 'Bool')SwiftUI 绑定布尔 if 语句(无法将类型 'Binding<Bool>' 的值转换为预期的条件类型 'Bool')
【发布时间】:2020-06-01 01:47:35
【问题描述】:

我正在尝试有条件地显示视图(不使用 .sheet)并使用绑定布尔值在标题中返回上述错误。如果我使用self.menuactivated,@State 变量切换时不会显示任何视图。有没有办法解决这个问题?

struct ContentView: View {
    @State private var menuActivated  = false

    var body: some View {
        NavigationView {
            ... // code
        }
        if $menuActivated {
            menuView()
        }
    }
}

【问题讨论】:

  • 这里不需要$.. 只需使用if menuActivated { }
  • if menuActivated 是正确的。如果您没有看到菜单,则说明您的布局有问题。将menuActivated默认设置为true并确保可见
  • @NewDev - 删除 $ 不会改变任何事情
  • @Paulw11 - 尝试使用它并使用 .position(x: 0, y:0) 检查视图是否会显示并且无处可见。
  • 如果你删除了if,只保留menuView,它会以你想要的方式显示视图吗?

标签: ios swift swiftui


【解决方案1】:

我认为这是意图(菜单将显示在 NavigationView 上切换)

struct ContentView: View {
    @State private var menuActivated  = false

    var body: some View {
        ZStack {
           NavigationView {
            ... // code
           }
           if menuActivated {
              menuView()
           }
        }
    }
}

【讨论】:

    【解决方案2】:

    找到了解决办法。将NavigationView 嵌入到VStack 中,并在其末尾添加menuView

    struct ContentView: View {        
    @State private var menuActivated  = false
    
            var body: some View {
                ZStack {
    
                    NavigationView {
                    ... // view code        
                    }
                    if menuActivated {
                        menuView()
                    }
    
                }
    
            }
        }
    

    【讨论】:

      【解决方案3】:

      如果您正在寻找基于条件的视图

      func getView() -> AnyView {
          return AnyView(
              //any business logic and view  
          )
      }
      

      并像使用它一样

      self.getView()
      

      【讨论】:

        猜你喜欢
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 2020-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多