问题标签 [swiftui-state]
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.
swift - 根据@State 属性设置变量
在我的 View 结构中,我具有以下@State
属性:
并在视图中多次body
重复此代码以检查是否应禁用登录按钮:
根据我的尝试,尝试isDisabled
在 View中设置body
:
在没有更多上下文的情况下,表达式的类型是模棱两可的
有没有办法可以在 View 结构中添加一个变量,isDisabled
这样我就不需要重复这个逻辑了?
swift - SwiftUI - 根据输入参数更改视图变量
如何根据调用视图时提供的输入参数 categorySize 在视图中更改 @State 变量大小?
我想在 categorySize == .Large 时将大小更改为 140,在 categorySize == .Small 时更改为 40。
我通过 if 语句尝试过,但这并不能解决问题:
我知道我可以在调用视图时传递 size 参数。但是,我只想传递 categorySize,然后让视图逻辑处理视图中的 size 变量。
ios - SwiftUI 状态变量未更新
我有一个 struct User 的爱好列表,如下所示:
然后,我使用用户列表作为状态变量生成列表视图。当单击列表视图中的按钮时,新的爱好会添加到用户的爱好中。
但是,当我单击按钮时,用户状态变量不会改变并且保持不变。谁能解释这里发生了什么?
swift - 是否可以在 init 中访问 enviromentObject 变量?
是否可以在结构的 init 函数中访问 enviromentObject 变量?
我试过这样但没有让它工作。我收到了这个错误:
我已将环境对象添加到 SceneDelegate 并且可以在我的 UI 中访问该变量。
swift - 在 init() 构造函数中初始化的带有 @State 的 SwiftUI 视图
我有这样一个简单的复选标记 SwiftUI 视图。它显示在列表中,可以通过点击它进行切换,也可以在从数据源(例如核心数据)刷新时进行切换
我的第一个实施是
它似乎工作我可以切换它并正确加载。在切换时,我通过 onCheck 关闭/回调保存了更改,它刷新了。
但是在外部刷新(如推送通知刷新底层模型)后,此视图的核心数据刷新不会正确更改@State 属性 isChecked。
在 init() 中,我得到了 isChecked 的新值,并使用 State(initialValue: ) 重新初始化了 @State。但是在正文中,我从旧的 @State 属性中获得了 isChecked 的旧值。所以视图确实有错误的图像。
这是解决方法,即仅依赖 let isChecked 属性和 onCheck 回调。但是现在我的视图中不能有状态,我只能依赖外部数据源的变化。也许它更合适,因为这样我有一个没有本地 @State 存储的单一事实来源。
swift - 在 Combine 的 `assign(to:on:)` 主题中分配给 @State 不会导致视图更新
我有一个地图视图,其中有一个按钮,当按下该按钮时,应将地图置于用户当前位置的中心。我正在尝试使用 Swift 的 Combine 框架来实现这一点。我尝试通过在 Combine 的主题中添加一个@State
名为mapCenter
并分配给该属性的属性来解决此assign(to:on:)
问题,如下所示:
这MapView
是一个UIViewRepresentable
视图,如下所示:
这CenterButton
是一个简单的按钮,如下所示:
并且LocationManager
是ObservableObject
发布用户当前和初始位置的一个:
不幸的是,上述方法不起作用。点击时,视图永远不会更新CenterButton
。我最终通过使用具有属性的ObservableObject
视图模型对象解决了这个问题@Published var mapCenter
,但是我不知道为什么我的初始解决方案使用@State
不起作用。@State
像我上面所做的那样更新有什么问题?
请注意,如果尝试重现此问题,您需要在文件中添加NSLocationWhenInUseUsageDescription
具有诸如“此应用需要访问您的位置”之类的值的键,Info.plist
以便能够授予位置权限。
swiftui - SwiftUI animate all except .foregroundColor
Based on the value of a @State var
, how can I animate any other parameters but one? For instance, I want to animate .offset
but not the .foregroundColor
. It may sound like an easy task to do, but it's not so easy when using the same "base view" to create some sort of cell views and combining different modifiers and transition.
For the following animation, I'm trying to "avoid" that change-color animation while allowing the offset to happen - I need the change of color to happen instantaneously, no animation.
For this animation, I'm also trying to "avoid" that change-color animation. The challenge here is that the base view also has a transition.
The "base view" name is LogoView
. Here's my code:
swiftui - SwiftUI井字棋盘
我对 SwiftUI 很陌生,我正在为我的班级制作一个井字游戏板。我正在关注这篇关于 Medium 的文章,但我遇到了一个问题。
在您玩游戏时,方块不会激活。直到游戏结束,你才能看到动作的位置。我不明白为什么会发生这种情况或如何解决它。任何帮助将非常感激!
swift - SwiftUI 状态值不会改变
我不熟悉State
。我测试了代码:
碰巧打印的值都是3!我哪里做错了?
State
在应该在 a 中的注释之后View
,我测试了代码:
碰巧的是Text
节目“3”,而不是“4”。我不明白。