2013-03-14 50 views
1

我對Ruby/MacRuby相當陌生。我遵循MacRuby網站上的秒錶示例,並使用該示例嘗試製作一個簡單的應用程序,其中需要6個小文本字段,然後在另一個較大的文本字段中顯示輸入。我發現一對夫婦(雖然含糊不清,很可怕的記錄)的例子MacRuby訪問/更新文本字段

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的帖子,但是我對它的理解不是很清楚。

回答

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 

現在工作就像一個魅力。

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 
+0

我收到一個錯誤,說'setMessageField':nil:NilClass(NoMethodError)'undefined method'stringValue' – pattmorter 2013-03-14 23:23:06

+0

確認setMessageField:中使用的所有實例變量都在某處被分配 - 很可能在Interface Builder中。請參閱秒錶示例中的「連接文本輸出口」部分。 – jtomschroeder 2013-03-15 01:31:10

+0

我遵循這一點,並連接了所有東西,但它仍然無法正常工作。 – pattmorter 2013-03-15 03:36:42