我想使用相同的方法作为多个下拉列表的事件处理程序。为了使方法的一部分工作,他们必须知道谁调用了它们 - 下拉列表的名称或它存储的标题作为其第一个值。我知道我可以为这些下拉列表中的每一个创建一个单独的方法,但这似乎过多了。有没有办法按照
的方式做点什么OnClick(int indexSelected, string dropdownTitle)
答案 0 :(得分:1)
我想使用与多个事件处理程序相同的方法 下拉列表。
您可以在Dropdown
的帮助下将delegate
实例作为参数传递,然后根据实例,名称或您喜欢的属性来比较它。
public Dropdown dropdown;
Dropdown otherDropDown;
void OnEnable()
{
//Register to onValueChanged Events
dropdown.onValueChanged.AddListener(delegate { callBack(dropdown); });
}
void OnDisable()
{
//Un-Register from onValueChanged Events
dropdown.onValueChanged.RemoveAllListeners();
}
void callBack(Dropdown currentDropdown)
{
//Compare dropdown by instance?
if (currentDropdown == otherDropDown)
{
int value = currentDropdown.value;
}
//Compare dropdown by name
if (currentDropdown.name == "YourDPName")
{
int value = currentDropdown.value;
}
}