【问题标题】:How to pass parameters via the selector/action?如何通过选择器/动作传递参数?
【发布时间】:2012-06-19 06:39:44
【问题描述】:

有没有办法在调用另一个函数时通过 addTarget 调用传递参数?

我也尝试过 sender 方法 - 但这似乎也失败了。在不创建全局变量的情况下传递参数的正确方法是什么?

@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

【问题讨论】:

    标签: rubymotion


    【解决方案1】:

    将“参数”附加到 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 方法。

    【讨论】:

      【解决方案2】:

      是的,您通常在 Controller 类中创建实例变量,然后从任何方法调用它们的方法。

      根据documentation 使用setTitle 是设置UIButton 实例标题的一般方法。所以你做对了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多