【问题标题】:shouldPerformSegueWithIdentifier called before checking other method issue在检查其他方法问题之前调用 shouldPerformSegueWithIdentifier
【发布时间】:2015-01-14 17:54:48
【问题描述】:

我正在尝试进行转场,但我有一个小问题,即我正在单击一个按钮,如果布尔值为 YES,它将在转场中返回 YES,否则返回 NO,但每次我必须单击两次检查文本字段,因为它首先传递给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;
  }
}

【问题讨论】:

    标签: ios objective-c segue


    【解决方案1】:

    您需要从按钮中的操作中删除 segue,将其移动到视图控制器,然后在您的 IBAction 方法中调用 performSegueWithIdentifier,或者只使用 shouldPerformSegueWithIdentifier 中的逻辑并删除 @987654324 @ 方法。

    所以,要么-

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

    【讨论】:

      猜你喜欢
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多