[英]How do I bind an NSString to a UITextView in Reactive Cocoa?
我正在構建一個iOS社交客戶端,在“撰寫”視圖中,我有一個UITextView
,用戶可以在其中輸入文本。 我想使用ReactiveCocoa將UITextView
的text
綁定到數據模型的NSString
,以遵循MVVM。
但是,我遇到了幾個問題,所有這些都與一件事有關:當以編程方式更改UITextView
的文本時,不會調用RACObserve
塊。
(示例:我將文本更改為屬性字符串以突出顯示#hashtags,@ usernames等,但是當以編程方式更改視圖時,不會創建此屬性字符串。)
在有關該主題的上一個問題中 ,我得到了一些有用的建議,即應該將textview綁定到模型(反之亦然),但是我不清楚如何使用當前版本的Reactive Cocoa來做到這一點。 我設法找到的示例代碼調用了現已棄用的API。
將UITextView
的rac_textSignal
綁定到NSString
(反之亦然)的合適方法是rac_textSignal
,以便當UITextView
的內容更改時(無論是通過編程方式還是由用戶),我都能可靠地調用代碼塊?
答案取決於視圖模型的text
和UITextView
的text
之間的綁定是否需要雙向。 通常,我們試圖遠離雙向綁定,因為它們變得難以推理。 理想情況下,只有一個方向在驅動數據。
因此,在這種情況下,您將編寫如下內容:
RAC(self.viewModel, text) = [RACSignal merge:@[
[self.textView rac_textSignal],
RACObserve(self.textView, text),
]];
這樣,您既可以直接對UITextView
的text
屬性進行更改,也可以對用戶鍵入的文本進行更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.