我有這個簡單的信號用於登錄用戶。使用Reactivecocoa只能撥打一次電話
-(RACSignal *)signInSignal {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[self.signInService
signInWithUsername:self.usernameTextField.text
password:self.passwordTextField.text
complete:^(BOOL success) {
if(success)
{
[subscriber sendNext:@(success)];
[subscriber sendCompleted];
}
else
[subscriber sendError:nil];
}];
return nil;
}];
}
和我的按鈕
[[[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
doNext:^(id x) {
NSLog(@"In do next");
self.signInButton.enabled = NO;
self.signInFailureText.hidden = YES;
}]
flattenMap:^id(id x) {
NSLog(@"flatten map");
return [self signInSignal];
}]
subscribeNext:^(NSNumber *signedIn) {
NSLog(@"In subscribe");
self.signInButton.enabled = YES;
self.signInFailureText.hidden = 1;
[self performSegueWithIdentifier:@"signInSuccess" sender:self];
} error:^(NSError *error) {
self.signInButton.enabled = YES;
self.signInFailureText.hidden = 0;
}];
它完美,所以我改密碼文本,並按下登錄按鈕,但它什麼都不做就意味着它要求只有一次(符號,直到我得到一個錯誤在按鈕被激活)
RACCommand是一個更優雅的解決方案。 – Catoshi
@TonyHan是的,它真的很有幫助。如果你發現這是有用的,然後PLZ upvote。這是我們的動力。 :d –