问题标签 [didset]

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 回答
282 浏览

swift - 使用模型对象 didSet 设置布尔值

我正在努力弄清楚如何使用模型对象的 didSet 正确设置布尔值。我的应用程序有一系列可滑动的卡片,有些可以翻转,有些则不能。下面的代码是为创建的每张卡片运行的 CardView。

目前,该代码非常适用于图像和标签——每张卡片根据每张卡片的模型对象加载唯一信息。但是, button 和 isFlippable 属性是我苦苦挣扎的地方。

现在的代码总是加载绿色路径。然而,奇怪的是,即使 cardModel 应该将按钮 isEnabled 设置为 false,它仍然会加载绿色(但按钮不起作用,所以它确实被禁用了......)

我也有当按钮翻转时交替“isBackShowing”然后调用 setupLayout() 的代码——它工作正常。但它在卡的初始设置期间总是加载为假。

0 投票
1 回答
132 浏览

swift - 为 outlet 集合设置 didSet

我在出口集合中添加了一些选择器视图,它们应该具有不同的属性,我需要将它们添加到它们的 didset 例如,这里是出口集合

问题是,我不得不说,如果第一个成员dataPickers做那件事,但我不知道我怎么能在 didset 中这么说。

有人可以帮我吗?太感谢了

0 投票
1 回答
142 浏览

swift - UIView 的子类不调用 didSet

我有一个名为 BaseView 的 UIView 子类。在 BaseView 的子类中,我使用一些代码创建了 didSet。在 UIViewController 我初始化 BaseView 的这个子类,他没有调用他的 didSet

基本视图代码:

BaseView 代码的子类:

UIViewController 代码:

0 投票
1 回答
446 浏览

arrays - 观察数组任何成员的任何属性的变化

我有一个存储类对象的数组:

当“apples”数组的任何成员的任何属性发生变化时,我想运行一个函数。在调用这个函数时,我需要将属性改变的数组的项作为参数传递。

我想使用didSeton color 属性,但在这种情况下,当 otherApple 的属性也发生更改时会调用函数。这不是我想要的。我只想在数组成员的属性发生更改时运行该函数。如果它不是成员,则该函数不应运行。

使用didSet,在任何情况下运行该函数,并在函数开头检查成员资格可能是一个想法,但我觉得这不是一个好方法。

如何使用 Swift 正确实现这一点?

编辑:Apple 的在 Swift 中使用键值观察的指南

0 投票
3 回答
9900 浏览

swift - SwiftUI 查看属性 willSet 和 didSet 属性观察者不起作用

我有一个带有附加 ViewModel 的 SwiftUI (Beta 5) 视图。我想通过 navigationLink 导航到它并传入一个简单的参数(在这种情况下称为 FSAC)

我使用导航

该视图具有带有 willSet 和 didSet 属性观察器的 FSAC 属性

打印语句永远不会被调用。第一个文本框正确显示参数;第二个是空白的。

我怎样才能让 Property Observers 开火?

更一般地说,是否有一种“正确”的方式来使用 navigationLink 将参数传递给具有 ViewModel 的 View?

0 投票
1 回答
53 浏览

arrays - 是否可以在不激活其 DidSet 属性的情况下使数组为空?

目前我有一个数组,它在设置时激活另一个函数:

我正在尝试通过激活 didSet 来清除数组,因为 didSet 函数也与应用程序的其他部分相关联,从而导致奇怪的行为。

到目前为止,我已经尝试过:

但他们都仍然激活了 didSet,有什么想法吗?

0 投票
1 回答
87 浏览

swift - cgpoint 的颜色会更改所有行,并且应该只更改新行

我的代码用于类。当函数 dizzy 被调用时,它会改变 uiview 中所有线条的颜色。我想要它做的只是改变调用函数后绘制的线条颜色。它不应该像现在这样改变已经绘制的线条的颜色。

0 投票
0 回答
570 浏览

binding - 子视图中的 SwiftUI @Binding 我如何观察父级的更改(又名 didSet)

我想观察子视图中@Binding属性的变化。但是没有调用 didSet/willSet(仅当我从当前视图更改此变量时才调用它,但如果更改是从外部视图,则不执行此处理程序)

我想在什么时候执行一些代码

从父视图更改。

然后我想重新计算 xOffset 状态属性

计算应增加当前 xOffset 值,如:

但我堆在这个地方。

0 投票
1 回答
2536 浏览

toggle - SwiftUI - 使用切换 - 控制台日志:“无效模式 'kCFRunLoopCommonModes'” - didSet 不起作用

我在使用 SwiftUI 切换时遇到了一个普遍问题。每当我使用它们时,我都会收到此控制台错误:

提供给 CFRunLoopRunSpecific 的无效模式“kCFRunLoopCommonModes” - 中断 _CFRunLoopError_RunCalledWithInvalidMode 以进行调试。此消息每次执行只会出现一次。

除此之外,当我在模拟器中点击切换时,didSet 不会打印任何内容。有谁知道,还是 SwiftUI 错误?

几个月前的 StackOverflow 上的其他相关问题似乎没有找到解决方案。

如果这是一个错误,我想知道切换的解决方法是什么。好像我不是第一个在 iOS 中使用切换的人。;-)

0 投票
4 回答
1246 浏览

swift - Swift 中的 Array.append() 未调用 didSet

我正在关注SwiftUI 的 100 天,并已达到第 37 天。在使用 UserDefaults 进行永久更改时,我遇到了didSet.

(我在 iOS 13.4 中使用 Swift 5)

在示例代码中,它写道

didSet应该在哪里调用.append()

但是,在实践中,didSet除非我将上面的代码更改为

我还在 Playground 中编写了一个小测试(见下文),这表明它.append()didSet

这种奇怪的行为真的让我想知道它是如何didSet工作的。还是这个问题与使用有关@ObservedObject(示例项目就是这种情况)?

PS:我从Project7下载了汉化版,也有这个问题。