问题标签 [viewbuilder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1274 浏览

swiftui - 如何在 SwiftUI 中遍历视图构建器内容子视图

所以我正在尝试创建一个视图,该视图采用 viewBuilder 内容,循环内容的视图并在每个视图和另一个视图之间添加分隔线

所以在我写“这里”的地方,如果有意义的话,我想循环查看内容的视图。我将编写一个不起作用的代码,但这解释了我想要实现的目标:

怎么做?

0 投票
1 回答
1456 浏览

ios - SwiftUI,在@Viewbuilder 中将视图作为参数传递

我的好奇心使我将View类型作为参数传递给@ViewBuilder. 将模型/原始类型作为参数传递@ViewBuilder是完全有效的。

如下代码所示。

代替String

如果我尝试传递 SwiftUIView类型,那么 Compiler 会对此不满意。

即使 params for@ViewBuilder接受自定义协议类型,例如Searchable但不接受View协议。

编译器告诉我这个Protocol 'View' can only be used as a generic constraint because it has Self or associated type requirements

我的整个想法是content可以允许保留Section/List/Text它。

编辑:我希望代码如下。

我有什么办法可以做到这一点?

0 投票
0 回答
72 浏览

swift - SwiftUI 中的 ContentView 文件对于编译器来说太复杂了?

自从 SwiftUI 2 发布以来,编译器和调试器就变得很糟糕。每当我在“viewThatCanContainOtherViews()”中向 ZStack 添加另一个视图(即自定义结构,甚至只是包含 Text() 元素的 VStack)时,代码都会拒绝编译。每个通常还包含一些堆栈或按钮或其他任何东西。我觉得 ViewBuilder 太复杂了,但我不明白如果这不是你的做法,其他应用程序是如何做到的?代码只是无法编译,我确信它不是某个地方的语法错误,因为它编译(尽管非常慢),除非我添加另一个视图,在这种情况下我会收到错误。

通用代码格式如下所示:

0 投票
1 回答
359 浏览

swiftui - Swiftui如何将带有参数的视图传递给另一个视图,该视图将在调用视图时设置参数

这是一个简单的示例,但我无法弄清楚如何将 test 的值传递到传入的目标视图中。网络上的所有示例在传入时都会形成“完全”视图。

(我正在考虑使用一个函数,我将值传递回父级并让它返回形成的视图,但那是向后的。)

这是为了支持一个 swift 包,其中一个视图由使用该包的应用程序提供。(然后,我提出的解决方案将让应用程序支持 GetView 函数。我希望应用程序只传递一个采用已定义参数的视图。

0 投票
2 回答
142 浏览

swiftui - 如何对@ViewBuilder 函数进行单元测试?

一个示例函数:

我试过这样的测试:

当只有一种可能的视图类型时它会通过,但一旦有选择就会失败。

关于如何对这个函数的输出进行单元测试有什么建议吗?

0 投票
1 回答
48 浏览

flutter - Flutter 中的 PageView.Builder 在 null 上调用了 getter 'length'。接收方:null 尝试调用:长度

当使用来自 API 的响应时显示错误 在 null 上调用了 getter 'length'。接收方:null 尝试调用: 这里的长度是我的 API 代码

同时使用 List 然后代码正常工作

0 投票
1 回答
81 浏览

swift - 在 Swift 的 If 语句中设置 @State var

我正在尝试在类型为 :View 的结构内的 If 语句中设置 @State var 的值,如下所示:

但是当我这样做时,我得到了错误:“类型'()'不能符合'视图';只有结构/枚举/类类型可以符合协议”。如果我使用一个可以满足我需要的类方法,如下所示:

我犯了同样的错误。

这样做的正确方法是什么?

0 投票
3 回答
356 浏览

ios - 在 SwiftUI 中使用 @ViewBuilder 单独修改传递给容器的子视图

在 SwiftUI 中,您可以将多个视图作为一个参数传递给另一个视图,这要归功于@ViewBuilder. 每个子视图都被单独处理,因此在被传递后,可以包含在 aVStack等中HStack

我的问题是:这个容器视图是否可以单独修改传递给它的每个子视图?例如,通过Spacer在每个子视图之间添加一个。

这是我正在寻找的等效功能:

我相信这是可能的,因为标准 SwiftUI 容器视图会影响传递给它们的子视图的外观和布局。除非这是通过 SwiftUI 的内部功能实现的?

解决此问题的一种方法可能是传递多个视图参数而不是一个,但如果需要传递许多视图,这是不灵活且混乱的。视图数组似乎也没有意义,因为我在 SwiftUI 的任何地方都没有注意到这种模式。

0 投票
0 回答
48 浏览

swiftui - ViewBuilder 未构建,功能无法正常工作

简单的 ViewBuilder 不工作

出现错误:无法将类型“_ConditionalContent<Text, Text>”的值转换为指定类型 ()。

这似乎是最新更新的错误。但是我的代码中有其他 ViewBuilders,我现在不敢碰。老实说,我看不出如何使 ViewBuilder 比这更简单,而且它不会构建。

**更新:感谢您的回答,需要添加返回类型,而不是错误

0 投票
1 回答
172 浏览

binding - 如何根据可选的 Binding 在此 SwiftUI @ViewBuilder 中初始化 Bool

我的目标是使用三元运算符为我的图像添加阴影,但如果视图使用默认图像,则不添加阴影。

这是我的代码:

我也有这个扩展Image

我正在尝试使看起来像这样的代码可以很好地工作并且很棒,除了影子布尔: