web-dev-qa-db-fra.com

'Receiver (<ViewController>) n'a pas de lien avec l'identificateur' addSegue '

J'ai un contrôleur de navigation qui a un lien de séparation entre eux appelé "addSegue". Lorsque je clique sur la cellule tableView alors que l'application se bloque et que le message d'erreur suivant s'affiche:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<MSAddFriendsViewController: 0x98cc340>) has no segue with identifier 'addSegue'

Je ne pense pas avoir de problèmes avec mon code. Voici la méthode dans laquelle j'ai la ligne showSegueWithIdentifier:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSMutableSet *selectedUsers = [NSMutableSet set];

[self.tableView deselectRowAtIndexPath:indexPath animated:NO];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];


cell.accessoryType = UITableViewCellAccessoryCheckmark;
PFRelation *friendsRelation = [self.currentUser relationforKey:@"friendsRelation"];
PFUser *user = [self.allUsers objectAtIndex:indexPath.row];
[friendsRelation addObject:user];
[self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (error) {
        NSLog(@"Error %@ %@", error, [error userInfo]);

    }    }];

[self performSegueWithIdentifier:@"addSegue" sender:self];

}

Voici une photo de mon storyboard

Voici une photo mise à jour de mon storyboard

11
MicahKE

J'ai eu ce même problème et en fait, mon problème était que j'appelais

WRONG: [self.navigationController performSegueWithIdentifier:@"ShowVerify" sender:self];

au lieu de

CORRECT: [self performSegueWithIdentifier:@"ShowVerify" sender:self];

alors vérifiez que vous appelez la bonne méthode performSegueWithIdentifier :)

16
ooxio

enter image description here

use segue identifier in Push Method and give the proper connection

si vous utilisez Identifier, appelez cette ligne si vous avez besoin

[self performSegueWithIdentifier:@"identifierName" sender:self];

Swift 2.X

self.performSegueWithIdentifier("identifierName", sender: self)

Swift 3

self.performSegue(withIdentifier: "identifierName", sender: self)

En ce qui concerne le nouvel écran, vous avez ajouté cela. Dans cet écran, lorsque vous avez terminé et que vous souhaitez le supprimer, il vous suffit:

self.dismiss(animated: false, completion: nil)
11
Anbu.Karthik

Difficile à dire avec certitude, mais d'autres personnes ont eu des problèmes similaires:

  • Dans cette question , le demandeur a instancié le scénarimage avec init au lieu de instantiateViewControllerWithIdentifier afin que la séquence Ne soit pas correctement configurée.

  • Dans cette question , c’était simplement quelque chose de bizarre se déroulant en interne avec xcode et le simulateur, et exécuter Produit-> Nettoyer Aidait.

  • Et bien sûr, il est possible que le nom de la division dans le code ne corresponde pas à celui de Storybord, mais je suppose que vous l'avez déjà vérifié à maintes reprises!

6
JKillian

Vérifiez si UIKIT est ou non dans le fichier d'en-tête. Sans le savoir, j’ai créé VC une sous-classe de View Controller. 

0
Vinay Krishna Gupta