Ios 将参数传递给RACCommand
所以我在UIButton上使用RACCommand。点击此按钮后,用户注册开始。它看起来像:Ios 将参数传递给RACCommand,ios,reactive-cocoa,frp,Ios,Reactive Cocoa,Frp,所以我在UIButton上使用RACCommand。点击此按钮后,用户注册开始。它看起来像: self->_termsOfServicesAcceptButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) { UserModel* newUser = [[UserModel alloc] initWithUsername:self->_userNameTextFie
self->_termsOfServicesAcceptButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
UserModel* newUser = [[UserModel alloc] initWithUsername:self->_userNameTextField.text password:self->_passwordTextField.text email:self->_emailTextField.text firstname:self->_firstNameTextField.text lastname:self->_lastNameTextField.text];
return [self termsOfServicesAcceptedSignal:newUser];
}
状态指示器钩住执行信号的,如:
[[self->_termsOfServicesAcceptButton.rac_command.executing deliverOn:[RACScheduler mainThreadScheduler]] subscribeNext:^(NSNumber* isSigningUp) {
@strongify(self);
if ([isSigningUp boolValue]) {
[self->_signUpActivityIndicator startAnimating];
NSLog(@" activity indicator started animating");
}
else {
[self->_signUpActivityIndicator stopAnimating];
NSLog(@" activity indicator stopped animating");
}
}];
术语sofservicesacceptedsignal
只是现有函数的包装,如下所示:
RACSignal* signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[self termsOfServicesAcceptButtonPressed:newUser withCompletion:^{
[subscriber sendNext:@(YES)];
[subscriber sendCompleted];
}];
return nil;
}];
return signal;
从这个意义上讲,newUser
被正确地传入,注册成功,但状态指示器从未停止旋转,即它从未收到任何结束的消息
我推测这是因为有了替换代码,RACCommand不再自动订阅术语sofservicesacceptedsignal
,而是newUserModelSignal
。那么,我该如何解决这个问题,以便状态指示器正确地拾取执行信号?谢谢。如何实现newUserModelSignal
?它完成了吗?
self->_termsOfServicesAcceptButton.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
return [newUserModelSignal flattenMap:^RACStream *(UserModel* newUser) {
return [self termsOfServicesAcceptedSignal:newUser];
}];
}];