如何将LabelMorph / TextMorph绑定到变量,以便当变量中的String更改时标签会更新?
我该怎么做?我应该使用哪种变形?
答案 0 :(得分:7)
最简单的方法是使用更新字符串变形:
UpdatingStringMorph on: self selector: #myLabel
这会将#myLabel(或任何其他消息)发送给自己(或任何其他对象)并显示它。
答案 1 :(得分:2)
这是Benjamin Van Ryseghem在Pharo Mailinglist上提供的解决方案:
对于这种情况,我的解决方案是使用ValueHolder。 而不是将字符串直接存储在实例变量中,而是存储 它进入了ValueHolder。
我在工作区中尝试了这个:
|string label|
string := 'Wait till i change..' asValueHolder.
label := LabelMorph contents: string contents.
string whenChangedDo: [:newValue | label contents: newValue ].
label openInWindow.
[ 5 seconds asDelay wait. string value: 'I changed :)' ] fork.
答案 2 :(得分:1)
取决于您想要实现的目标。 您可能想看看在当前Moose图像中使用Glamour的方法。 在工作区中,执行操作:
GLMBasicExamples new magritte openOn: GLMMagrittePersonExample sampleData
这显示了如何在保存时使用公告。前面的示例是开始理解如何使用Glamour的更好方法(并且由于示例浏览器的构建方式,Magritte示例在嵌套时不更新列表):
GLMBasicExamples open
还有其他几个更新更新的示例。