问题标签 [property-observer]

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 投票
11 回答
220085 浏览

swift - Swift 中 willSet 和 didSet 的作用是什么?

Swift 的属性声明语法与 C# 非常相似:

但是,它也有willSetdidSet动作。它们分别在调用 setter 之前和之后调用。考虑到您可以在 setter 中使用相同的代码,他们的目的是什么?

0 投票
5 回答
49555 浏览

swift - 属性观察者 willSet 和 didSet;属性获取器和设置器

在属性中使用 this 时willSet-didSetget-有什么区别?set

从我的角度来看,它们都可以为属性设置值。什么时候,为什么,我应该使用willSet- didSet,什么时候get- set

我知道对于willSetand didSet,结构如下所示:

0 投票
2 回答
173 浏览

swift - 如何设置字符串变量并使其始终小写?

我想设置一个字符串变量并希望它始终保持小写。

这是我的代码:

但是当我使用它时,它会进入无限循环。我怎么解决这个问题?

0 投票
1 回答
2434 浏览

ios - Swift didSet on UICollectionViewCell property running, but not updating UI

I have a custom UICollectionViewCell that changes its appearance in response to selection events, and should change its appearance in response to other property changes, too, but doesn't.

The selected state for the cell updates nicely, but whenever I do cell.isCrossedOut = true, I can see the code running, but I don't see the background colour actually changing, even though it seems to be using exactly the same logic as the selection property observer.

I can trigger a visual update by doing collectionView.reloadData() (not acceptable to reload the entire collection view), or collectionView.reloadItemsAtIndexPaths([...]) (more or less acceptable I guess), but I really would prefer to update the UI dynamically.

EDIT

This is how I update the crossed out property:

0 投票
1 回答
2536 浏览

java - Java 是否有类似于 Swift 的 willSet 和 didSet 方法的属性观察器?

我想观察变量的值是否已更改。我想知道 Java 是否有与Swift中willSetanddidSet方法等效的东西?

0 投票
1 回答
86 浏览

swift - 为什么可以将属性观察者添加到存储属性,但不能添加惰性存储属性

我是 Swift 新手,正在尝试学习属性观察者的概念。在其中一个 Youtube 教程中,有人提到“可以将属性观察者添加到存储属性,但不能添加惰性存储属性”。

0 投票
1 回答
417 浏览

ios - 属性观察者为边界工作而不是框架

我正在做这个项目,我在故事板上有一个场景。

场景是一个 TableViewController。

  • 表格视图有一个自定义原型单元格(链接到 CustomCell.swift)。

    • 在原型单元格内有一个标签和一个自定义 UIView(链接到 CustomView.swift)。这些元素具有相对于原型单元格的 contentView 的布局约束。

现在,我希望在我的自定义视图上绘制的内容在视图大小发生变化时发生变化,以便在设备旋转时将其调整为新的单元格宽度。由于限制,在设备旋转后,当 CustomCell 改变大小时,CustomView 的框架会发生变化。为了检测到这一点,我在 CustomView.swift 中添加了两个属性观察器:

运行项目时,当我旋转设备时,第二个观察者工作正常。第一个观察者没有。我的问题是为什么第一个观察者没有检测到框架已经改变?

0 投票
1 回答
55 浏览

ios - 如何在系统变量上设置属性观察器

我有以下变量:private var screenWidth = UIScreen.mainScreen().bounds.width

我想知道如何在其上设置属性观察器?或者在更新时获取它的最新版本?

0 投票
0 回答
58 浏览

ios - 单击时此代码如何更改按钮的背景颜色?

从这篇文章中获得的以下代码据说会在按下按钮时改变按钮的颜色。

但是,我想知道变量“突出显示”也会对应什么?

如果我以编程方式在我的视图中添加一个按钮,如下所示:

我将如何使用它exampleButton

0 投票
0 回答
23 浏览

swift - 财产观察者没有受到打击,但价值正在改变

我有一个变量,似乎在整个应用程序中都在变化。当我最初将一个值更改为 true 然后打印时,我已经确认了这一点,它表明它是 false,false,false,true,false,false,false,并且我观察到的属性被击中,所以“它改变了!” 显示在控制台中。

但是,我后来再次打印出来,它又恢复为 false,尽管没有改变它的值(我可以看到)并且属性观察器没有被命中。它不会打印“它改变了”,但在控制台中,它会打印 false、false、false、false、false、false、false。

任何帮助将非常感激。