1

私はRuby/MacRubyにかなり慣れていません。MacRuby Webサイトのストップウォッチの例に従い、その例を使用して、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

明らかにここに何か問題がありますが、誰かが私に正しい方向へのヒントを与えることができますか?私はここでこの投稿を見ましたが、よく理解できませんでした。

4

2 に答える 2

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
于 2013-03-14T19:11:10.903 に答える
0

何が起こっているのかを理解しました。setMessageFieldメソッド内で、+=演算子が無効でした。そのため、次のように変更する必要がありました。メソッド名を変更しました。

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

今では魅力のように機能します。

于 2013-03-15T04:01:18.337 に答える