2011-04-02 95 views
0

我在程序中有一個文本字段,它使用綁定表示來自模型對象的fileName。我希望這個textField可以用來輸入一個新的fileName,並且在用戶按下Enter之後,它應該把消息發送到我的模型對象,在我的textField中fileName的值已經改變,然後在我的模型對象中檢查這個文件名是否可以被使用被稱爲。如果它返回true,那麼它應該將新值應用於我的模型對象,如果不是,那麼在我的textField中的值應該恢復爲初始值。驗證TextField中的文本

有人知道它是如何實現的嗎?我可以驗證我的值,但是我無法將我的textField刷新爲初始值。至於這兩個改變模型對象的值,並且texField刷新應該使用KVC兼容的單一方法,我不知道如何實現這樣的行爲。

任何幫助將不勝感激。

+0

檢查fileName檢查無效字符或確保文件名是唯一的方法嗎?例如,不是重複的。 – 2011-04-02 16:32:00

+0

這是檢查名稱是否是唯一的... – BartoNaz 2011-04-03 08:33:23

回答

1

這聽起來不像是一個很好的用戶體驗;作爲一個用戶,如果我在文本字段中輸入一個簡單的錯字,它會完全刪除我剛纔輸入的內容,我很不高興。這將是更好地顯示一條消息,指出什麼是錯的,以及用戶如何修復它。儘管如此...

我認爲你應該設置一個文本字段委託。讓委託保持一個變量,保存輸入的最後一個有效字符串。然後在textFieldShouldEndEditing:中,檢查有效性,如果檢查未通過,請將文本字段的值設置爲該變量並返回NO。如果它通過,更改變量以保存新的有效字符串並返回YES。

+0

你是對的顯示錯誤信息,但那是細節。我不知道如何把這個檢查內部綁定。關於委託的想法聽起來不錯,但我對他們不是很熟悉。實際上來自textField的值綁定到數組中的一個對象,所以textField綁定到arrayController.selection.fileName。使用委託使我能夠以編程方式協調我的綁定,我是否理解正確? – BartoNaz 2011-04-03 08:35:54

+0

將委託方法與綁定結合起來應該沒有任何問題。通常,委託方法可以輕鬆自定義類的行爲(通常是UI元素),而不必打擾子類。這個想法是,對象向其代理請求許可或反饋各種操作,例如,如果輸入無用,您可以阻止用戶從文本字段中退出。 – 2011-04-04 06:19:45

+0

聽起來很有趣。我會更多地研究代表使用它。謝謝你的幫助... – BartoNaz 2011-04-04 09:48:23