swiftui - 如何在 SwiftUI 视图中执行非视图代码
问题描述
我一遍又一遍地为此苦苦挣扎,所以我想我错过了一些东西。我需要进行数学运算、进行设置、分配值或任何一系列简单操作以响应某些用户操作,例如此处显示的示例,而 SwiftUI 想要一个我不需要视图的视图。必须有办法绕过 ViewBuilder 的规则。我通过创建一个不必要的视图并在视图的 init() 中执行我需要的代码来解决这个问题,但这似乎非常尴尬。
import SwiftUI
struct ContentView: View
{
@State var showStuff = false
var body: some View
{
VStack
{
Toggle(isOn: $showStuff)
{
Text("Label")
}
if showStuff
{
UserDefaults.standard.set(true, forKey: "Something")
}
}
}
}
解决方案
struct ExecuteCode : View {
init( _ codeToExec: () -> () ) {
codeToExec()
}
var body: some View {
return EmptyView()
}
}
用法:
HStack {
ExecuteCode { print("SomeView1 was re-drawn!") }
SomeView1()
}
推荐阅读
- python - 如何检查矩阵是否在矩阵列表中 Python
- sql - 如果,PL SQL 中的 ELSIF 和 ELSE 条件不起作用
- javascript - 如何使用 libphonenumber AsYouTypeFormatter 处理退格
- ruby-on-rails - 带有“if”语句的嵌套循环
- c++ - C/C++ 位数组分辨率变换算法
- c++ - 软件预取和反向循环
- android - 如何将 .class 库导入 Android Studio 上的项目?
- javascript - 云功能 - 看不到我的功能部署到 Firebase 控制台
- python - python OpenAI gym monitor在录制目录下创建json文件
- sql-server - 键入 SQL 查询时,如何修改下拉列表