如何获得RacSignal的返回值

时间:2013-12-09 06:02:22

标签: reactive-programming reactive-cocoa

我有一个关于ReactiveCocoa的初学者问题。 我想根据用户与shouldPerformSegueWithIdentifier的互动返回UIAlertView方法的值。 到目前为止,这就是我所拥有的,显然它不起作用。我该怎么办?

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender{
    if([identifier isEqualToString:ModalBrowser]){
        if(self.delegate.currentCoreConversation!=nil){
            UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Disconnect?" message:@"This action will disconnect you from your current conversation. Would you like to continue?" delegate:self cancelButtonTitle:@"Heck No Techno!" otherButtonTitles:@"Certainly", nil];
            [alertView show];
            [alertView.rac_buttonClickedSignal subscribeNext:^(NSNumber *x) {
                //    return [x isEqual:@1];
            }];
            [alertView.rac_buttonClickedSignal subscribeNext:^(NSNumber *x) {
                //    return [x isEqual:@1];
            }];
        }
    }
    return YES;
}

1 个答案:

答案 0 :(得分:2)

警报视图在显示时不会阻止执行的线程。换句话说,用户点按 后,您已经从-shouldPerformSegueWithIdentifier:sender:返回。

您应该立即返回NO,然后以编程方式触发segue(在用户响应您的警报视图后),而不是试图找出改变该行为的方法。