Rubymotion Teacup可变范围

时间:2013-12-10 21:06:11

标签: scope rubymotion teacup

在Teacup的Tweets example之后,我正在尝试访问布局块之外的变量

class WindowController < TeacupWindowController
    stylesheet :pref_window

layout do

  @loginButton = subview(
    NSButton, :loginButton,
    state: NSOffState,
    buttonType: NSSwitchButton, 
    action: 'login',
    target: self,
    )

  puts @loginButton.class

end

puts @loginButton.class

第一个put返回NSButton类,但第二个返回Nil类。

如果我需要以编程方式对其进行更改,如何访问@loginButton?

例如:

@loginButton.setState(NSOnState)

在布局块之外不起作用。

1 个答案:

答案 0 :(得分:1)

您可以使用attr_accessor上的WindowController,然后在布局框中使用self.loginButton,它将在WindowController上分配,以便您访问puts按钮。

我还假设第二个class WindowController < TeacupWindowController stylesheet :pref_window attr_accessor :loginButton layout do self.loginButton = subview( NSButton, :loginButton, state: NSOffState, buttonType: NSSwitchButton, action: 'login', target: self, ) puts self.loginButton.class end puts self.loginButton.class end 实际上是在另一个方法中,这只是示例代码。

{{1}}