Est-il possible d’annuler une segue dans la `` méthode ?
Je veux effectuer une vérification avant la segue, et si la condition n’est pas vraie (dans ce cas, si certains `` est vide), afficher un message d’erreur au lieu d’exécuter la segue.
Est-il possible d’annuler une segue dans la `` méthode ?
Je veux effectuer une vérification avant la segue, et si la condition n’est pas vraie (dans ce cas, si certains `` est vide), afficher un message d’erreur au lieu d’exécuter la segue.
Dans iOS 6 et plus tard, sa possible: Vous devez mettre en œuvre la méthode
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
dans votre vue-contrôleur. Vous faites de votre validation de là, et si c'est OK alors return YES;
si ce n'est pas l' return NO;
et le prepareForSegue est de ne pas appeler.
Notez que cette méthode n'est pas appelée automatiquement lors du déclenchement enchaîne par programme, si vous avez besoin pour effectuer la vérification, alors vous devez appeler shouldPerformSegueWithIdentifier pour déterminer s'il convient d'effectuer des enchaînements.
Remarque: la accepté de répondre est la meilleure approche si vous pouvez cibler iOS 6. Pour le ciblage de l'iOS 5, cette réponse ne.
Je ne crois pas qu'il est possible d'annuler un segue en prepareForSegue
. Je suggère de déplacer votre logique, au point que l' performSegue
message est d'abord envoyé.
Si vous utilisez l'Interface Builder pour câbler un enchaîner directement à un contrôle (par exemple de relier un enchaîner directement à un UIButton
), alors vous pouvez accomplir cela avec un peu de refactoring. Fil de la séquence à la vue du contrôleur, au lieu d'un contrôle spécifique (supprimer l'ancien segue lien, puis glisser à partir de la vue du contrôleur lui-même à la destination-vue-contrôleur). Puis de créer un IBAction
de votre point de vue contrôleur de fil et le contrôle de la IBAction. Ensuite, vous pouvez faire votre logique (case vide TextField) dans le IBAction vous venez de créer, et de décider si ou de ne pas performSegueWithIdentifier
par programmation.
Semblable à du Kaolin de réponse est de laisser le seque câble de contrôle pour valider le contrôle basé sur les conditions dans la vue. Si vous êtes de cuisson sur la table de l'interaction des cellules, alors vous devez également définir la userInteractionEnabled de la propriété ainsi que la désactivation de la substance dans la cellule.
Par exemple, j'ai un formulaire dans un groupe de la vue de la table. L'une des cellules conduit à une autre tableView qui agit comme un sélecteur. Chaque fois qu'un contrôle est modifiée dans la vue principale j'appelle cette méthode
-(void)validateFilterPicker
{
if (micSwitch.on)
{
filterPickerCell.textLabel.enabled = YES;
filterPickerCell.detailTextLabel.enabled = YES;
filterPickerCell.userInteractionEnabled = YES;
filterPickerCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
else
{
filterPickerCell.textLabel.enabled = NO;
filterPickerCell.detailTextLabel.enabled = NO;
filterPickerCell.userInteractionEnabled = NO;
filterPickerCell.accessoryType = UITableViewCellAccessoryNone;
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.