2016-04-25 149 views
0

我现在正在实施简单的Facebook/Google登录。但是试图在我的项目中应用MVVM模式和ReactiveCocoa。我无法将viewModel与viewControllers绑定。尝试CocoaActions但无法使其工作。将ViewModel绑定到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> 

视图控制器:

 //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准备在视图模型定义,你可以这个动作绑定到视图控制器这样一个按钮:

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)