Обратному вызову для метода изменения переключателя требуется TagGroup
в качестве второго аргумента:
void radioButtonChanged(object self, TagGroup radio_list)
Так что изменение функции radioCallback()
в приведенном выше коде для получения этих двух параметров в примере работает нормально ( приведенный ниже код).
Обратите внимание, что это позволяет легко получить выбранное значение переключателей, поскольку radio_list
содержит значение в индексе «Значение»:
void radioCallback(object self, TagGroup radio_list){
number value;
radio_list.TagGroupGetTagAsNumber("Value", value);
result("radio callback, radio list has value " + value + "\n");
}
Полный рабочий пример кода в вопросе следующий:
class testDialog : UIFrame{
void buttonCallback(object self){
result("button callback\n");
}
void radioCallback(object self, TagGroup radio_list){
result("radio callback\n");
}
}
TagGroup dialog_items;
TagGroup dialog_tags = DLGCreateDialog("Test Dialog", dialog_items);
TagGroup button_tag = DLGCreatePushButton("Button", "buttonCallback");
dialog_items.DLGAddElement(button_tag);
TagGroup radio_list = DLGCreateRadioList(0, "radioCallback");
radio_list.DLGAddRadioItem("Radio 1", 0);
radio_list.DLGAddRadioItem("Radio 2", 1);
dialog_items.DLGAddElement(radio_list);
Object dialog = alloc(testDialog).init(dialog_tags);
dialog.Pose();