NSInvalidArgumentException - récepteur n'a pas d'enchaîner avec un identifiant
J'ai tout essayé pendant des heures, et rien n'a fonctionné. Je suis en train de séquence entre deux contrôleurs de vue, à partir d'un tableViewController à l'autre tableViewController. La séquence est accroché jusqu'au niveau supérieur de vue, pas le tableviewcell. L'identificateur qui a été définie dans Xcode est identique à celle utilisée dans le code (copier et coller). Il fonctionnait bien, la nuit dernière, mais maintenant je n'arrive pas à obtenir d'enchaîner sans s'écraser.
ici sont les méthodes dans 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 meilleurs Endroits[512:f803] * fin de l'app en raison de uncaught exception 'NSInvalidArgumentException', raison: Destinataire (PlacesTableViewController: 0x6887ff0) n'a pas d'enchaîner avec l'identificateur 'segue1"
* Premier lancer de pile d'appel:
(0x13c0052 0x1551d0a 0xde24b 0x3efd 0xa771d 0xa7952 0x92f86d 0x1394966 0x1394407 0x12f77c0 0x12f6db4 0x12f6ccb 0x12a9879 0x12a993e 0x17a9b 0x2778 0x26d5)
résilier appelé à la levée d'une exception
- Hey! j'ai corrigé! 1. assurez-vous que le droit storyboard est sélectionné dans Xcode(si vous renommez la table de montage séquentiel changement dans le résumé du projet). puis supprimer l'application sur le simulateur et redémarrer
- La suppression de l'app est une solution! Tnx!
- Dans certains cas, le supprimer seul ne fonctionne pas. Vous aurez besoin de nettoyer et de construire l'application à nouveau.
- Aussi: Vérifier si vous avez localisé votre storyboard ou foiré autour. J'ai eu deux versions (l'une en fr.lproj/ et l'autre dans l'es.lproj/) et celui qui est utilisé (fr) n'était pas le même, j'ai été modifier (es). J'ai juste retiré de projet, supprimé non utilisé l'un et rajouté le "bon".
- Wow, ce qu'est un bug! J'ai aussi supprimé l'application dans le simulateur après la modification de l'emplacement d'un segue et cela fonctionne maintenant.
- Merci à @RamonPoca , votre indice résout mon problème.
- La suppression de l'app m'a aidé aussi sur le périphérique réel
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de le réparer en exécutant "propre" dans le cadre du "Produit" menu dans Xcode, et de réinitialiser le contenu et les paramètres du simulateur.
J'ai eu ce même problème. Dans mon initialiseur
- (id)initWithCoder:(NSCoder *)aDecoder
je faisaisself = [super init];
quand je l'ai faitself = [super initWithCoder:aDecoder];
. Quand je corrige cela tout a fonctionné comme prévu.J'ai eu le même problème et a lutté avec pendant des heures. Stackmonster réponse a résolu mon problème (renommer la table de montage), mais je ne comprenais pas pourquoi il a résolu le problème.
J'ai constaté que lorsque j'ai changé un élément sur la table de montage séquentiel (ajout d'une étiquette ou changé la couleur de fond), il n'a pas été reflétée dans le simulateur, je n'étais pas à l'aide de la table de montage que j'ai pu voir dans xcode, mais une version plus ancienne de la table de montage séquentiel.
J'ai dû renommer le storyboard dans le navigateur de projets et aussi de le renommer dans le
info.plist
(dans les fichiers de prise en charge) et mon étiquette est apparu, et la couleur de fond appliquée, et la séquence travaillé.Je ne sais pas pourquoi le storyboard changements n'ont pas pris effet, mais il m'a causé une énorme quantité de temps à trouver. J'ai vu sur les blogs que beaucoup de développeurs ont le même problème.
j'ai corrigé! 1. assurez-vous que le droit storyboard est sélectionné dans Xcode(si vous renommez la table de montage séquentiel changement dans le résumé du projet). puis supprimer l'application sur le simulateur et redémarrez
Dans Interface Builder, vous devez définir la séquence de l'identificateur de
segue1
qui est un segue connecté à votre vue-contrôleur.J'ai essayé tout ce qui est inscrit et n'a pas de chance. Ce qui a fonctionné a été de créer une nouvelle séquence, une nouvelle Vue, puis l'utiliser, exécuter, puis créer un segue revenir à l'ancien affichage.
Eu ce problème avec un déroulement des enchaînements. Finalement rendu compte que j'ai perdu mon identifiant quand j'ai remplacé une-vue-contrôleur sur la table de montage séquentiel. J'ai rajouté en cliquant sur le déroulement segue dans la structure du document (barre latérale de storyboard), puis dans les attributs de l'inspecteur, ajouter l'identifiant.
Si rien ne fonctionne, au moins en ce qui concerne détendez-vous enchaîne, vous pouvez appeler
J'ai eu le même problème que j'ai fait de nouvelles VC en tant que sous-classe d'une autre vue-contrôleur. Il devrait être sous-classe de UIViewController ou UITableViewController. Vérifier le fichier d'en-tête si UIKIT est importé ou pas.