有没有办法通过addTarget调用传递参数,因为它调用另一个函数?
我也试过了发送方法 - 但这似乎也破了.在不创建全局变量的情况下传递参数的正确方法是什么?
@my_button = UIButton.buttonWithType(UIButtonTypeRoundedRect)
@my_button.frame = [[110,180],[100,37]]
@my_button.setTitle("Press Me", forState:UIControlStateNormal)
@my_button.setTitle("Impressive!", forState:UIControlStateHighlighted)
# events
newtext = "hello world"
@my_button.addTarget(self, action:'buttonIsPressed(newtext)', forControlEvents:UIControlEventTouchDown)
view.addSubview(@my_button)
def buttonIsPressed (passText)
message = "Button was pressed down - " + passText.to_s
NSLog(message)
end
Run Code Online (Sandbox Code Playgroud)
更新:
好的,这是一个有效的实例变量的方法.
@my_button = UIButton.buttonWithType(UIButtonTypeRoundedRect)
@my_button.frame = [[110,180],[100,37]]
@my_button.setTitle("Press Me", forState:UIControlStateNormal)
@my_button.setTitle("Impressive!", forState:UIControlStateHighlighted)
# events
@newtext = "hello world"
@my_button.addTarget(self, action:'buttonIsPressed', forControlEvents:UIControlEventTouchDown)
view.addSubview(@my_button)
def buttonIsPressed
message = "Button was pressed down - " + @newtext
NSLog(message)
end
Run Code Online (Sandbox Code Playgroud)
将"参数"附加到rubymotion UIButton调用的最简单方法是使用标记.
首先设置一个带tag属性的按钮.此标记是您要传递给目标函数的参数.
@button = UIButton.buttonWithType(UIButtonTypeRoundedRect)
@button.setTitle "MyButton", forState:UIControlStateNormal
@button.frame =[[0,0],[100,50]]
@button.tag = 1
@button.addTarget(self, action: "buttonClicked:", forControlEvents:UIControlEventTouchUpInside)
Run Code Online (Sandbox Code Playgroud)
现在创建一个接受sender作为参数的方法:
def buttonClicked(sender)
mytag = sender.tag
#Do Magical Stuff Here
end
Run Code Online (Sandbox Code Playgroud)
预警:据我所知,tag属性只接受整数值.您可以通过将逻辑放入目标函数来解决这个问题,如下所示:
def buttonClicked(sender)
mytag = sender.tag
if mytag == 1
string = "Foo"
else
string = "Bar"
end
end
Run Code Online (Sandbox Code Playgroud)
最初我尝试设置有效的操作,action: :buttonClicked但不允许使用该sender方法.
| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |