小编Jer*_*ern的帖子

SwiftUI .fullScreenCover 显示为 .sheet

我希望能够关闭一张纸并在之后立即呈现全屏覆盖,但是这似乎在两个状态修改之间没有延迟的情况下不起作用。

struct ContentView: View {
    
    @State var sheet = false
    @State var cover = false
    
    var body: some View {
        Button("Click me for sheet") {
            sheet = true
        }
        .fullScreenCover(isPresented: $cover) {
            Text("This is a full screen cover")
        }
        .sheet(isPresented: $sheet) {
            Text("This is a sheet")
            Button("This doesn't work") {
                sheet = false
                cover = true
            }
            Button("This works") {
                sheet = false
                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                    cover = true
                }
            }
        }
        
    }
}

Run Code Online (Sandbox Code Playgroud)

单击“这不起作用”按钮会生成下图,演示全屏封面显示为一张纸且未覆盖整个屏幕:

在两次状态修改之间引入一个小延迟(通过单击“This Works”按钮来完成)可以解决此问题。

我对 …

swiftui

7
推荐指数
1
解决办法
2494
查看次数

如何使用模具模板工具快速获取变量的子字符串

我正在使用此处找到的 swift 模板语言工具:https : //github.com/stencilproject/Stencil

使用主分支。

问题

给定以下.json文件

{
  "xcassets" : "dev Sources test1"
}
Run Code Online (Sandbox Code Playgroud)

我希望能够检索由" "“dev”分隔的第一个单词。

我试过的

最新版本的 Stencil 具有拆分功能。但问题是我不知道如何访问结果数组中的第一个元素,而且文档中也没有。

我在模板文件中尝试了以下内容:

{{xcassets|split:" "[0]}}

{{{{xcassets|split:" "}}[0]}}

{{xcassets|split:" ".first}}

{{xcassets|split:" "}}.first}}

{{xcassets|split:" "|[0]}}

{{xcassets|split:" "|.first}}

{{xcassets|split:" "|first}}
Run Code Online (Sandbox Code Playgroud)

没有一个工作。

我试图避免的

我知道我可以这样做,但必须有更好的方法。

{% for element in xcassets|split:" " %}
    {% if forloop.first %}
        {{ element }}
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

有人对更好的工具有什么建议吗?

templating swift-stencil

6
推荐指数
1
解决办法
375
查看次数

标签 统计

swift-stencil ×1

swiftui ×1

templating ×1