MacRuby访问/更新文本字段

时间:2013-03-14 03:24:14

标签: ruby macruby

我是Ruby / MacRuby的新手。我按照MacRuby网站上的秒表示例,我使用该示例尝试制作一个简单的应用程序,它需要6个小文本字段,然后在另一个较大的文本字段中显示输入。我发现了一对(虽然含糊不清且记录非常严重)的例子

class AppDelegate

    attr_accessor :window

    attr_accessor :subjectField, :messageField, :emailTo, :emailFrom, :smtpServerAddress, :smtpPort, :password

    attr_writer :subjectField, :messageField, :emailTo, :emailFrom, :smtpServerAddress, :smtpPort, :password

    def setMessageField(sender)
        @messageField += "SMTP Server Address: #{@smtpServerAddress.to_s}\n")
        @messageField += "SMTP Port: #{@smtpPort.to_s}\n")
        @messageField += "User Email: #{@emailFrom.to_s}\n")
        @messageField += "User Password: #{@password.to_s}\n")
        @messageField += "To Email: #{@emailTo.to_s}\n")
        @messageField += "Subject: #{@subjectField.to_s}\n")
    end

end

显然这里有问题,但有人能给我一个正确方向的暗示吗?我在这里看到this帖子,但我不太了解它。

2 个答案:

答案 0 :(得分:0)

假设IBOutlets已连接且所有这些出口都是NSTextFields,请尝试:

class AppDelegate
    attr_accessor :window
    attr_accessor :subjectField, :messageField, :emailTo, :emailFrom, :smtpServerAddress, :smtpPort, :password

    def setMessageField(sender)
        @messageField.stringValue += "SMTP Server Address: #{@smtpServerAddress.stringValue}\n"
        @messageField.stringValue += "SMTP Port: #{@smtpPort.stringValue}\n"
        @messageField.stringValue += "User Email: #{@emailFrom.stringValue}\n"
        @messageField.stringValue += "User Password: #{@password.stringValue}\n"
        @messageField.stringValue += "To Email: #{@emailTo.stringValue}\n"
        @messageField.stringValue += "Subject: #{@subjectField.stringValue}\n"
    end
end

答案 1 :(得分:0)

弄清楚发生了什么。在setMessageField方法中,+=运算符无效。所以我不得不将其改为以下内容。我更改了方法名称btw。

attr_accessor :window
attr_accessor :subjectField, :messageField, :emailTo, :emailFrom, :smtpServerAddress, :smtpPort, :password

def setText(sender)
    @messageField.stringValue = "SMTP Server Address: #{@smtpServerAddress.stringValue}\n"
    @messageField.stringValue = "#{@messageField.stringValue}SMTP Port: #{@smtpPort.stringValue}\n"
    @messageField.stringValue = "#{@messageField.stringValue}User Email: #{@emailFrom.stringValue}\n"
    @messageField.stringValue = "#{@messageField.stringValue}User Password: #{@password.stringValue}\n"
    @messageField.stringValue = "#{@messageField.stringValue}To Email: #{@emailTo.stringValue}"
    @messageField.stringValue = "#{@messageField.stringValue}Subject: #{@subjectField.stringValue}\n"
end

现在就像魅力一样。