2014-02-26 19 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

相关问题