问题标签 [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.

0 投票
1 回答
61 浏览

swift - 根据@State 属性设置变量

在我的 View 结构中,我具有以下@State属性:

并在视图中多次body重复此代码以检查是否应禁用登录按钮:

根据我的尝试,尝试isDisabled在 View中设置body

在没有更多上下文的情况下,表达式的类型是模棱两可的

有没有办法可以在 View 结构中添加一个变量,isDisabled这样我就不需要重复这个逻辑了?

0 投票
1 回答
624 浏览

swift - SwiftUI - 根据输入参数更改视图变量

如何根据调用视图时提供的输入参数 categorySize 在视图中更改 @State 变量大小?

我想在 categorySize == .Large 时将大小更改为 140,在 categorySize == .Small 时更改为 40。

我通过 if 语句尝试过,但这并不能解决问题:

我知道我可以在调用视图时传递 size 参数。但是,我只想传递 categorySize,然后让视图逻辑处理视图中的 size 变量。

0 投票
2 回答
3251 浏览

ios - SwiftUI 状态变量未更新

我有一个 struct User 的爱好列表,如下所示:

然后,我使用用户列表作为状态变量生成列表视图。当单击列表视图中的按钮时,新的爱好会添加到用户的爱好中。

但是,当我单击按钮时,用户状态变量不会改变并且保持不变。谁能解释这里发生了什么?

0 投票
1 回答
862 浏览

swift - 是否可以在 init 中访问 enviromentObject 变量?

是否可以在结构的 init 函数中访问 enviromentObject 变量?

我试过这样但没有让它工作。我收到了这个错误:

我已将环境对象添加到 SceneDelegate 并且可以在我的 UI 中访问该变量。

0 投票
1 回答
1698 浏览

swift - 在 init() 构造函数中初始化的带有 @State 的 SwiftUI 视图

我有这样一个简单的复选标记 SwiftUI 视图。它显示在列表中,可以通过点击它进行切换,也可以在从数据源(例如核心数据)刷新时进行切换

我的第一个实施是

它似乎工作我可以切换它并正确加载。在切换时,我通过 onCheck 关闭/回调保存了更改,它刷新了。

但是在外部刷新(如推送通知刷新底层模型)后,此视图的核心数据刷新不会正确更改@State 属性 isChecked。

在 init() 中,我得到了 isChecked 的新值,并使用 State(initialValue: ) 重新初始化了 @State。但是在正文中,我从旧的 @State 属性中获得了 isChecked 的旧值。所以视图确实有错误的图像。

这是解决方法,即仅依赖 let isChecked 属性和 onCheck 回调。但是现在我的视图中不能有状态,我只能依赖外部数据源的变化。也许它更合适,因为这样我有一个没有本地 @State 存储的单一事实来源。

0 投票
3 回答
1080 浏览

swift - 在 Combine 的 `assign(to:on:)` 主题中分配给 @State 不会导致视图更新

我有一个地图视图,其中有一个按钮,当按下该按钮时,应将地图置于用户当前位置的中心。我正在尝试使用 Swift 的 Combine 框架来实现这一点。我尝试通过在 Combine 的主题中添加一个@State名为mapCenter并分配给该属性的属性来解决此assign(to:on:)问题,如下所示:

MapView是一个UIViewRepresentable视图,如下所示:

CenterButton是一个简单的按钮,如下所示:

并且LocationManagerObservableObject发布用户当前和初始位置的一个:

不幸的是,上述方法不起作用。点击时,视图永远不会更新CenterButton。我最终通过使用具有属性的ObservableObject视图模型对象解决了这个问题@Published var mapCenter,但是我不知道为什么我的初始解决方案使用@State不起作用。@State像我上面所做的那样更新有什么问题?

请注意,如果尝试重现此问题,您需要在文件中添加NSLocationWhenInUseUsageDescription具有诸如“此应用需要访问您的位置”之类的值的键,Info.plist以便能够授予位置权限。

0 投票
1 回答
221 浏览

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.

enter image description here

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.

enter image description here

The "base view" name is LogoView. Here's my code:

0 投票
2 回答
322 浏览

swiftui - SwiftUI井字棋盘

我对 SwiftUI 很陌生,我正在为我的班级制作一个井字游戏板。我正在关注这篇关于 Medium 的文章,但我遇到了一个问题。

在您玩游戏时,方块不会激活。直到游戏结束,你才能看到动作的位置。我不明白为什么会发生这种情况或如何解决它。任何帮助将非常感激!

0 投票
1 回答
255 浏览

swift - SwiftUI 状态值不会改变

我不熟悉State。我测试了代码:

碰巧打印的值都是3!我哪里做错了?

State在应该在 a 中的注释之后View,我测试了代码:

碰巧的是Text节目“3”,而不是“4”。我不明白。

0 投票
1 回答
124 浏览

swiftui - 如何使用 SwiftUI 将视图包装在“状态”属性更新中

下面的代码创建了一个简单的代码HStack,最终看起来像这样: 预习

问题是点击“增量”会增加“计数”而不是“嵌套”。有谁知道为什么会这样,以及如何解决这个问题?State或者当 SwiftUI 视图嵌套在变量中时,它们是否会从根本上中断?