gpt4 book ai didi

rubymotion - 如何通过选择器/操作传递参数?

转载 作者:行者123 更新时间:2023-12-02 20:26:01 26 4
gpt4 key购买 nike

有没有办法在调用另一个函数时通过 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

更新:

好的,这是一个带有实例变量的有效方法。

@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

最佳答案

将“参数”附加到 ruby​​motion 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)

现在创建一个接受 sender 作为参数的方法:

def buttonClicked(sender)
mytag = sender.tag

#Do Magical Stuff Here
end

警告:据我所知,标签属性只接受整数值。您可以通过将逻辑放入目标函数中来解决此问题,如下所示:

def buttonClicked(sender)
mytag = sender.tag

if mytag == 1
string = "Foo"

else
string = "Bar"
end

end

最初,我尝试使用 action: :buttonClicked 设置操作,该操作有效,但不允许使用 sender 方法。

关于rubymotion - 如何通过选择器/操作传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11095648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com