swiftui - 自定义绑定初始化
问题描述
我想控制传递给 Binding 的值以进行自定义初始化,我正在使用这个向下代码,xcode 向我抛出这个:
需要帮助解决问题,谢谢帮助。
import SwiftUI
struct ContentView: View {
@State private var int: Int = Int()
var body: some View {
BindingView(int: $int)
}
}
struct BindingView: View {
@Binding var int: Int
init(int: Binding<Int>) {
if int == 0 { // <<: Here
_int = 100 // <<: Here
}
else {
_int = int
}
}
var body: some View {
Text(int.description)
}
}
解决方案
您不能Int
像这样直接访问以进行比较,因为它是@Binding。相反,您需要访问它的wrappedValue
:
仅将输入参数 ( ) 命名为与存储的属性相同时,您还会遇到一些有趣的事情int
,但它很容易修复。这是一种变体:
struct BindingView: View {
@Binding var int: Int
init(int: Binding<Int>) {
if int.wrappedValue == 0 { // <<: Here
int.wrappedValue = 100 // <<: Here
}
self._int = int
}
var body: some View {
Text(int.description)
}
}
请注意,这里有一些微妙之处:@Binding
允许您直接访问底层值,而Binding<Int>
您必须使用该wrappedValue
属性。
推荐阅读
- unity3d - MRTK 2.4 - ScrollingObjectCollection 不通过脚本更新
- c# - 带有抽象 Equals 方法的 C# 抽象记录
- composer-php - 作曲家安装自动加载失败
- python - 函数中的 Subprocess.call() 不会暂停调用该函数的脚本
- sql - 即使没有有损块,也会执行 Postgresql 重新检查
- javascript - 我怎样才能在反应原生的标题栏上获得这种模糊效果?
- python - 谐波(发声)和非(辅音)声音之间的区别
- qt - 如何将灰度图像打印为单色彩色图像?
- mysql - 当 (is_admin & is_coach) 在用户表中为真时,节点如何管理用户角色我想将用户重定向到管理员或教练仪表板?登录代码如下
- amazon-web-services - REST API 请求字典键并获取值作为响应