这是我想要实现的代码。 (也许这不正确,或者无法实现???)
var buttons = this.buttons;
for (int i = 0; i < buttons.Length; ++i)
{
var button = buttons[i];
// I want to pass current button to onClick,
// but onClick is a delegate with no param just like System.Action.
button.onClick += OnClick;
}
void OnClick(Button button)
{
// Do something
}
答案 0 :(得分:2)
您可以使用lambdas转发事件。它不是世界上最美丽的东西。您可以使用UITextFieldDelegate
订阅按钮的func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return true
}
事件。这个lambda是一个带有0个参数的void委托,就像一个Action,因此可以用来订阅onClick
事件。
基本上,你取局部变量() => OnClick(button);
的值并在lambda中使用它,只在调用事件时调用它。
您的行应如下所示:onClick