V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anxiousPumpkin
V2EX  ›  iOS

请教大佬! swiftui 如何使用 ViewModel 中的 bool 值控制 View 层的 sheet 展示?

  •  1
     
  •   anxiousPumpkin · 2022-05-14 11:57:08 +08:00 · 946 次点击
    这是一个创建于 925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    学习 swift & swiftui 中,遇到一个关于 sheet 展示的小问题,请各位大佬指点。

    一般常见的都是在 View 层以@State标记的 bool 变量来控制 sheet 开关

    struct ContentView: View {
        
        @State var showSheet:Bool = false
        
        var body: some View {
            VStack{
                Text("Hello, world!")
                    .padding()
            }.sheet(isPresented: $showSheet){
                //sheet view...
            }
        }
    }
    

    但是如果此时有了 ViewModel ,我想在 ViewModel 里的某些逻辑后再控制 sheet 开关,该如何实现呢?

    class MyViewModel : ObservableObject {
        
        
        func sheetControlBySomeJudgement(){
            if (...) {
                //此时需要将 View 层 sheet 展开
                //此时如何关联改变外部的 @State 变量呢?
                //尝试过使用 @Binding 来关联内外 bool 参数,但是好像并没有用
            }
        }
    }
    
    uclort
        1
    uclort  
       2022-05-14 14:12:07 +08:00   ❤️ 2
    viewModel 里面声名属性
    @Published var showSheet:Bool = false
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2812 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:54 · PVG 15:54 · LAX 23:54 · JFK 02:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.