简体   繁体   中英

ReactiveCocoa binding “networkActivityIndicator” Crushes

I have this code:

 RAC(self.viewModel , password) = self.signupCell.passwordTextField.rac_textSignal;
    RAC(self.viewModel , userName) = self.signupCell.usernameTextField.rac_textSignal;
    RAC([UIApplication sharedApplication], networkActivityIndicatorVisible) = self.viewModel.executeRegister.executing;

At my LogIn page. At first is runs perfect, But it user Logout and gets to the register page once again, the app crushes at the line:

 RAC([UIApplication sharedApplication], networkActivityIndicatorVisible) = self.viewModel.executeRegister.executing;

With Error:

'Signal name: is already bound to key path "networkActivityIndicatorVisible" on object , adding signal name: is undefined behavior'

I'm guessing it has something to do with subscribing to UIApplication events. But I'm not sure what else can i do beside sending subscriber completed as so:

 [subscriber sendCompleted]

Any one had the same problem?

thanks.

EDIT

With the help of @erikprice and @powerj1984 I found a solution:

RAC([UIApplication sharedApplication], networkActivityIndicatorVisible) = [self.viewModel.executeRegister.executing takeUntilBlock:^BOOL(id x) {
    return _viewShowing;
}];

The "_viewShowing" veritable is setted to YES on ViewWillAppear, And to NO on ViewWillDisapear. This is not the best coding.. So if anyone has a better option i would be happy to use it. Thanks.

That error message means that you're trying to call RAC(UIApplication.sharedApplication, networkActivityIndicatorVisible) more than once. Make sure you only make that call on that specific property of that specific object one time, ever. (Or at least until such time as you dispose of the subscription, as @powerj1984 suggests.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM