2015-01-14 2 views
1

Я пытаюсь сделать segue, но у меня есть небольшая проблема, которая заключается в том, что я нажимаю на кнопку, и если логическое значение YES, оно возвращает YES в segue else return NO но каждый раз мне нужно дважды щелкнуть, чтобы проверить текстовое поле, потому что оно проходит сначала до shouldPerformSegueWithIdentifier, пока оно должно сначала проверить IBAction.shouldPerformSegueWithIdentifier вызывается перед проверкой другого вопроса проблемы

Пожалуйста, как я могу исправить эту проблему?

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

ответ

2

Вам необходимо либо удалить SEGUE от действия в вашей кнопки, переместите его в контроллер представления, а затем вызвать performSegueWithIdentifier в методе IBAction, или просто логику в 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; 
} 
Смежные вопросы