MVVM 및 ReactiveCocoa를 사용하여 viewModel과 UI 간의 바인딩을 수행하는 앱을 빌드하고 있지만 뷰 모델 유효성 신호 구독 블록이 호출되지 않습니다.ReactiveCocoa 구독 블록이 viewModel Swift에서 호출되지 않았습니다.
내보기 모델은 매우 간단하고 베어 :
내보기 컨트롤러에서class ViewModel: RVMViewModel {
var name: String = "" {
willSet {
println("New Value: \(newValue)")
}
}
required init(){
super.init()
let signal = self.rac_valuesForKeyPath("name", observer: self)
signal.subscribeNext {
println("Subscribe block: \($0)")
}
}
}
, 나는 다음과 같은 바인딩을 가지고 : 내가 신속한에서 작업 RAC 매크로 기반으로 가지고
//observe ui and programatic changes
RACSignal.merge([self.nameField.racTextSignal(), self.nameField.rac_valuesForKeyPath("text", observer:self)]).subscribeNext({
(next) -> Void in
if let text = next as? String {
self.viewModel.name = text
}
})
RAC(self.nameField, "text") = self.viewModel.rac_valuesForKeyPath("name", observer: self)
내가
here을 읽으십시오.
이제 내보기 컨트롤러의 내보기 바인딩에서 subscribeNext 블록을 올바르게 호출합니다. 내 viewModel에서는 willSet에서 새 값이 인쇄됩니다. 그러나 init 블록에서 내 신호의 구독 블록은 속성이 처음 초기화 될 때 한 번만 호출됩니다. 이것은 나를 벽으로 몰고 간다.
결국 나는 걱정을하지 않게되었습니다. – barndog
@startupthekid 해결책을 게시하시기 바랍니다. 이것이 결국 결국 우리가 여기서 배운 것을 나누고 싶습니다. :) –