m0_46221176 2024-10-20 15:50 采纳率: 18.2%
浏览 10

swift在for循环中使用path遇到的问题 哪位能够知道原因

使用swift编程,在for循环中使用path遇到问题,提示包含控制流的闭包不能与结果生成器“ViewBuilder”一起使用,哪位能够指点一下,非常感谢!

img

  • 写回答

1条回答 默认 最新

  • 无疆76 2024-10-20 15:51
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的问题看起来是在 Swift 中使用 Path() 创建路径并在 for 循环中使用时遇到了问题。错误信息指出,“包含控制流的闭包不能与结果生成器‘ViewBuilder’一起使用”。这是因为 SwiftUI 的 ViewBuilder 不允许使用包含控制流的闭包,例如带有 for 循环或 if 语句的闭包。你的代码试图在 Path() 的闭包内使用 for 循环,这是不允许的。

    一种可能的解决方案是将你的逻辑重构,避免在 Path() 的闭包中使用控制流。以下是一个简单的重构例子,以绘制一条从点 (10, 20) 到 (100, 20),再到 (100, 120) 的路径:

    struct ContentView: View {
        var body: some View {
            VStack {
                Path { path in
                    path.move(to: CGPoint(x: 10, y: 20))
                    path.addLine(to: CGPoint(x: 100, y: 20)) // first line
                    path.addLine(to: CGPoint(x: 100, y: 120)) // second line
                }
            }
        }
    }
    

    如果你的目的是基于某些条件或计算来动态创建路径,你可以将这些逻辑提前在 View 的其他部分进行计算,并将结果存储在变量中,然后在 Path() 的闭包中使用这些变量。这样,你就可以避免在 Path() 的闭包中使用控制流。希望这能帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日