2013-12-09 64 views
0

我有一个关于ReactiveCocoa的初学者问题。 我想根据与UIAlertView的用户交互返回shouldPerformSegueWithIdentifier方法的值。 这就是我到目前为止,显然它不起作用。我应该如何继续?RacSignal的返回值如何得到

-(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; 
} 

回答

2

警报视图在显示时不会阻塞执行线程。换句话说,用户的水龙头将在之后到达,您已经从-shouldPerformSegueWithIdentifier:sender:返回。

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