2016-04-25 2 views
0

Я внедряю простой аккаунт на facebook/google. Но пытаюсь применить шаблон MVVM с ReactiveCocoa в моем проекте. Я не могу связать viewModel с viewControllers. Пробовал CocoaActions, но не смог заставить его работать.Binding ViewModel to ViewController (ReactiveCocoa) iOS

вид Модель:

let name = MutableProperty<String>("") 
let email = MutableProperty<String>("") 
let phoneNo = MutableProperty<String>("") 
let referal = MutableProperty<String>("") 

var fbLoginAction:Action<OnboardingViewController,Bool,NSError> 

View Controller:

 //MARK: Signup Binding 
    let loginCocoaAction = CocoaAction(viewModel.fbLoginAction., input:()) 
    signupView.fbBtn.addTarget(loginCocoaAction, action: CocoaAction.selector, forControlEvents: .TouchUpInside) 

ответ

1

Свое время, так как был опубликован этот вопрос. С тех пор, RAC 5.0.0 был освобожден, который делает это намного проще, благодаря UI креплениями:

Предполагая, у вас есть fbLoginAction готовы, как это определено в виде модели, вы можете связать это действие с кнопкой в ​​View Controller, как это :

signupView.fbBtn.reactive.pressed = CocoaAction(fbLoginAction, input: self) 

Ваша первоначальная проблема была, вероятно, потому, что вы предоставили () в качестве входных данных, но вход вашего fbLoginAction определяется как OnboardingViewController.

Зависит от того, действительно ли вы имели в виду, чтобы сделать это, и нуждаются в OnboardingViewController в качестве входных данных для fbLoginAction, вы можете сделать это, как писал выше, с input: self, или если вы на самом деле не нужен вход, вы можете изменить его на

let fbLoginAction:Action<(),Bool,NSError> 

и

signupView.fbBtn.reactive.pressed = CocoaAction(fbLoginAction) 
Смежные вопросы