Exception du didacticiel IOS (exemple de tâche)

J'ai suivi ce tutoriel IOS en utilisant XCode 5.0.2 et suis arrivé à un barrage routier 🙁

J'ai implémenté la partie dans Ajouter des éléments à la list des tâches et c'est là que le problème commence.

C'est dans mon AddToDoItemViewController qui se passe quand je choisis done:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if(sender != self.doneButton) { return; } if(self.textField.text.length > 0) { self.todoItem = [[ToDoItem alloc] init]; self.todoItem.itemName = self.textField.text; self.todoItem.completed = NO; } 

}

Une fois cela fait, je reçois un appel à la méthode suivante qui est supposée append l'élément à la masortingce Mutable dans mon ToDoListViewController:

 - (IBAction) unwindToList:(UIStoryboardSegue *)segue { AddToDoItemViewController *source = [segue sourceViewController]; ToDoItem *item = source.todoItem; if(item != nil) { [self.toDoItems addObject:item]; [self.tableView reloadData]; } } 

Ce que j'ai remarqué est que si je ne tape rien dans le champ de text et que je clique sur append à partir de la list puis sur annuler ou sur terminé, il n'y a pas d'exception et les vues passent de l'option Ajouter à l'affichage list. MAIS si je tape quelque chose dans le textField et que je sélectionne cancel ou done, une exception est levée.

 2014-01-26 22:28:15.301 ToDoList[2537:a0b] -[AddToDoItemViewController textField:]: unrecognized selector sent to instance 0x89c4b60 2014-01-26 22:28:15.310 ToDoList[2537:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AddToDoItemViewController textField:]: unrecognized selector sent to instance 0x89c4b60' 

Quelques conseils seraient appréciés afin que je puisse get ce travail. Merci!

MODIFIER:

Après plusieurs heures passées à regarder et à essayer de comprendre pourquoi l'exception s'est produite, j'ai finalement trouvé pourquoi.

Je suis allé au storyboard et j'ai cliqué droit sur le champ de text. J'ai trouvé que l'un des Send Events était lié à une méthode (Editing Did End pour être spécifique). Aucune idée comment ce lien a été fait, mais j'ai supprimé le lien. Le seul lien que j'ai vu était sous Referencing Outlets qui pointait vers le textField dans AddToDoItemViewController.m. Une fois que j'ai essayé à nouveau, ça a marché. Merci à tous ceux qui ont donné des suggestions.

Résumé: C'est un problème pour lier votre UIObject à votre Controller.

Peut-être que je suis en retard, mais ce serait utile pour quelqu'un d'autre, car il m'a fallu jusqu'à 2 heures pour réaliser un débutant ici.

J'ai traîné le textField (input) au controller afin de créer une reference.

J'ai fait une erreur parce que j'ai fait glisser la reference vers la zone d'implémentation au lieu de la faire sur l'interface interne.

Quand j'en ai pris conscience, j'ai supprimé le code généré dans mon controller, mais je n'ai pas supprimé la reference de l'object !!!

Pour supprimer complètement la reference, vous devez sélectionner l'object avec le button secondaire de la souris et supprimer la reference inutile (sockets) de votre controller.

vous avez oublié de connecter le champ de text en xib

Veuillez suivre la section ci-dessous spécifiée dans ce lien

Pour connecter le champ de text à votre controller de vue