web-dev-qa-db-fra.com

NSInvalidArgumentException - le récepteur n'a pas de séquence avec l'identifiant

J'ai tout essayé pendant des heures et rien n'a fonctionné. J'essaie de faire la transition entre deux contrôleurs de vue, d'une tableViewController à une autre tableViewController. La séquence est connectée à la vue de niveau supérieur, pas à la cellule tableview. L'identifiant qui a été défini dans Xcode est identique à celui utilisé dans le code (copier et coller). Ça fonctionnait bien la nuit dernière, mais maintenant, je n'arrive pas à le faire enchaîner sans s'écraser.

voici les méthodes par lesquelles la séquence est appelée

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    self.photoList = [FlickrFetcher photosInPlace:[self.topPlacesList objectAtIndex:indexPath.row] maxResults:50];
    NSLog(@"photolist %@", self.photoList);

    NSLog(@"here");

    [self performSegueWithIdentifier:@"segue1" sender:self];
    NSLog(@"here");
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"segue1"])
    {
        PhotosTableViewController *photosTVC = segue.destinationViewController;
        photosTVC.photoList = self.photoList;
    }
}

voici le rapport d'erreur

2012-08-08 15: 28: 39.093 Top Places [512: f803] * Arrêt de l'application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: 'Receiver (PlacesTableViewController: 0x6887ff0) n'a aucun lien avec identificateur 'SEGUE1' " * pile premier appel de lancer: (0x13c0052 0x1551d0a 0xde24b 0x3efd 0xa771d 0xa7952 0x92f86d 0x1394966 0x1394407 0x12f77c0 0x12f6db4 0x12f6ccb 0x12a9879 0x12a993e 0x17a9b 0x2778 0x26d5) mettre fin à une exception appelée lancer

voici une capture d'écran du storyboard http://s14.postimage.org/66wf13q4h/Screen_Shot_2012_08_08_at_3_22_10_PM.png

31
James Traimory

je l'ai corrigé! 1. assurez-vous que le bon storyboard est sélectionné dans Xcode (si vous renommez le storyboard, changez-le dans le résumé du projet). puis supprimez l'application sur le simulateur et redémarrez

3
James Traimory

J'ai pu le corriger en exécutant "nettoyer" sous le menu "Produit" dans Xcode et en réinitialisant le contenu et les paramètres dans le simulateur.

50
pickwick

J'ai eu le même problème. Dans mon initialiseur - (id)initWithCoder:(NSCoder *)aDecoder je faisais self = [super init]; quand j'aurais dû faire self = [super initWithCoder:aDecoder];. Quand j'ai corrigé cela, tout a fonctionné comme prévu.

6
Jason Leach

J'ai eu le même problème et j'ai lutté avec lui pendant des heures. La réponse de Stackmonster a résolu mon problème (renommer le storyboard), mais je n'ai pas compris pourquoi cela a résolu le problème.

J'ai constaté que lorsque je modifiais un élément du storyboard (ajout d'une étiquette ou modification de la couleur d'arrière-plan), cela ne se reflétait pas dans le simulateur - je n'utilisais pas le storyboard que je pouvais voir dans xcode, mais une version plus ancienne du storyboard. J'ai dû renommer le storyboard dans le navigateur de projet et également le renommer dans le info.plist (dans les fichiers de support) et mon étiquette est apparue, la couleur d'arrière-plan a été appliquée et la séquence a fonctionné.

Je ne sais pas pourquoi les changements du storyboard ne prenaient pas effet, mais cela m'a fait énormément de temps à trouver. J'ai vu sur les blogs que beaucoup de développeurs ont le même problème.

4
steepLearningCurve

Dans Interface Builder, vous devez définir l'identificateur de séquence sur segue1 qui est une séquence connectée à votre contrôleur de vue.

0
deleted_user

J'ai eu le même problème que j'ai créé de nouveaux VC comme sous-classe d'un autre contrôleur de vue. Il devrait s'agir de la sous-classe de UIViewController ou UITableViewController. Vérifiez le fichier d'en-tête si UIKIT est importé ou non.

0
Vinay Krishna Gupta

Eu ce problème avec une séquence de déroulement. J'ai finalement réalisé que j'avais perdu mon identifiant lorsque j'ai remplacé un contrôleur de vue sur le storyboard. Je l'ai rajouté en cliquant sur la séquence de déroulement dans le plan du document (barre latérale du storyboard), puis dans l'inspecteur d'attributs, ajoutez l'identifiant correspondant.

Si rien d'autre ne fonctionne, à la location en ce qui concerne les séquences de déroulement, vous pouvez appeler

[self dismissViewControllerAnimated:YES completion:nil];
0
inorganik

J'ai tout essayé et je n'ai pas eu de chance. Ce qui a fonctionné était de créer une nouvelle séquence vers une nouvelle vue, puis d'utiliser celle-ci, de l'exécuter, puis de créer une séquence pour revenir à l'ancienne vue.

0
Elijah Murray