在检查其他方法问题之前应该调用SegueWithIdentifier

我试图让一个segue,但我有一个小问题,这是我点击一个button,如果布尔是YES它会返回YES是在segue否则返回NO,但每次我必须点击两次检查textfield,因为它首先传递shouldPerformSegueWithIdentifier而它应该首先检查IBAction。

请问我该如何解决这个问题?

 - (IBAction)search:(id)sender{ if ([_txtfld.text isEqual:@"test"]) { push = YES; //Bolean } else { push = NO; //Bolean } } - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { if ([identifier isEqualToString:@"SearchSegue"] && push==YES) { NSLog(@"Showed"); return YES; } else{ NSLog(@"Not showed"); return NO; } } 

您需要从button中的动作中移除segue,将其移至视图控制器,然后在您的IBAction方法中调用performSegueWithIdentifier ,或者仅在shouldPerformSegueWithIdentifier使用逻辑并删除IBAction方法。

所以,无论 –

 - (IBAction)search:(id)sender{ if ([self.txtfld.text isEqual:@"test"]) { [self performSegueWithIdentifier:@"SearchSegue" sender:self]; } } 

并且摆脱应该执行shouldPerformSegueWithIdentifier或摆脱IBAction方法并且有 –

 - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { BOOL ret=YES; if ([identifier isEqualToString:@"SearchSegue"]) { if (![self.txtfld.text isEqual:@"test"]) { ret=NO; } } return ret; }