当按下菜单项时,我想设置标签的文本,但是我得到错误:"调用
在我的菜单委托中,我有:
using Toybox.WatchUi as Ui;
using Toybox.System as Sys;
using Toybox.Position as Position;
class DiscGolfMenuDelegate extends Ui.MenuInputDelegate {
var _view;
function initialize() {
MenuInputDelegate.initialize();
_view = new DiscGolfView();
}
function onMenuItem(item) {
if (item == :measure_throw) {
Sys.println("item 1");
_view.setLongestThrow("yeet");
} else if (item == :start_game) {
Sys.println("item 2");
}
}
}
setLongestThrowFunction位于View类中,看起来像:
function setLongestThrow(msg) {
longest_throw_label.setText(msg);
}
这是没有意义的,为什么我会得到一个意外的类型错误,因为我正在传递一个字符串。有人看到我没看到的吗?谢谢。
我认为问题不在于_view
或传递给setText
的字符串,而在于longest_throw_label
。
问题可能是你在菜单构造函数中初始化了_view
,但是视图还没有被布局(系统还没有调用_view.onLayout(dc)
,因为视图还没有被推送)。