2014-02-26 16 views
1

我正在構建一個iOS社交客戶端,在「撰寫」視圖中,我有一個UITextView用戶輸入文本。我想使用ReactiveCocoa將UITextViewtext綁定到數據模型的NSString,以遵循MVVM。如何將NSString綁定到Reactive Cocoa中的UITextView?

但是,我遇到了幾個問題,都涉及到一件事情:RACObserve塊不會被調用,當編碼UITextView的文本被改變。

(舉個例子:我改變文本成屬性串突出#哈希標籤,@使用者名稱等,但是當視圖以編程方式改變了這種屬性串還沒有生成)

my previous question on this topic,我得到了一些有用的建議,我應該將textview綁定到模型 - 反之亦然 - 但我不清楚我應該如何使用當前版本的Reactive Cocoa來實現。 sample code that I've managed to find調用現在不推薦使用的API。

什麼是的UITextViewrac_textSignal綁定到NSString(反之亦然),使得當UITextView的內容被改變(無論是通過編程或通過用戶)我能夠可靠地調用的代碼塊中的適當的方式是什麼?

回答

5

答案取決於視圖模型的textUITextViewtext之間的綁定是否需要雙向。一般來說,我們試圖遠離雙向綁定,因爲它們變得難以推理。理想情況下,只有一個方向是驅動數據。因此,在這種情況下

,你會寫這樣的:

RAC(self.viewModel, text) = [RACSignal merge:@[ 
           [self.textView rac_textSignal], 
           RACObserve(self.textView, text), 
          ]]; 

你在修改兩個UITextView小號text財產直接,文本來自於用戶打字變化拿起這樣。

+0

然後從那裏你可以'RACObserve(self.viewModel,text)'並找出所有的文本變化。 – joshaber

+0

完美!非常感謝。 – bryanjclark

相關問題