簡體   English   中英

如何將NSString綁定到Reactive Cocoa中的UITextView?

[英]How do I bind an NSString to a UITextView in Reactive Cocoa?

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

但是,我遇到了幾個問題,所有這些都與一件事有關:當以編程方式更改UITextView的文本時,不會調用RACObserve塊。

(示例:我將文本更改為屬性字符串以突出顯示#hashtags,@ usernames等,但是當以編程方式更改視圖時,不會創建此屬性字符串。)

有關該主題的上一個問題中 ,我得到了一些有用的建議,即應該將textview綁定到模型(反之亦然),但是我不清楚如何使用當前版本的Reactive Cocoa來做到這一點。 我設法找到示例代碼調用了現已棄用的API。

UITextViewrac_textSignal綁定到NSString (反之亦然)的合適方法是rac_textSignal ,以便當UITextView的內容更改時(無論是通過編程方式還是由用戶),我都能可靠地調用代碼塊?

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

因此,在這種情況下,您將編寫如下內容:

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

這樣,您既可以直接對UITextViewtext屬性進行更改,也可以對用戶鍵入的文本進行更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM