Je suis nouveau sur iPhone et objectif c. J'ai passé des heures et des heures et des heures à lire des documents et à essayer de comprendre comment les choses fonctionnent. J'ai RTFM ou au moins suis dans le processus. Mon principal problème est que je veux comprendre comment spécifier où un événement est passé et la seule façon dont j'ai pu le faire est de spécifier les délégués, mais je suis certain qu'il y a un moyen plus facile/plus rapide dans IB. .Utilisation efficace d'Interface Builder
Donc, un exemple. Disons que j'ai 20 vues différentes et voir les contrôleurs et un MyAppDelegate. Je veux être en mesure de construire tous ces différents fichiers Xib dans IB et ajouter cependant de nombreux boutons et champs de texte et autres, puis spécifier qu'ils produisent tous un événement dans l'objet MyAppDelegate. Pour ce faire, j'ai ajouté un objet MyAppDelegate dans chaque contrôleur de vue dans la vue de liste d'IB. Ensuite, j'ai créé une méthode IBAction dans MyAppDelegate dans XCode et suis retourné à IB et lié tous les événements à l'objet MyAppDelegate dans chaque fichier Xib. Cependant, lorsque j'ai essayé de l'exécuter, il s'est écrasé avec une exception de lecture incorrecte. Je suppose que chaque fichier Xib place un pointeur d'objet MyAppDelegate qui n'a rien à voir avec l'adresse MyAppDelegate qui sera créée lors de l'exécution.
Donc, ma question est ... comment puis-je faire cela?
Si je l'ai dit @property (nonatomic, conserver) IBOutlet MyAppDelegateClass * appDelegate puis sous-classé chacun de mes viewcontrollers de cette base viewController, puis ajouter les différentes méthodes de IBAction dans mon AppDelegate se alors sûrement il y a une certaine façon de se connecter ces IBOutlets dans le constructeur d'interface au lieu de dans le code? Jusqu'à présent, je l'ai fait par programmation en plaçant simplement la propriété appDelegate à self lors du chargement des contrôleurs de vue à partir de MyAppDelegateClass mais je pense que la ligne [UIApplication ...] sera meilleure. Mais n'y a-t-il pas un moyen à IB? – twerdster
Un délégué d'application est une instance spécifique. Vous devez pointer vers cette instance spécifique ou vous n'atteignez pas le délégué réel. Le simple fait de donner une classe à une classe ne laisse pas ses sous-classes pointer vers des instances spécifiques. Chacun de ces points de vente doit être lié à l'instance de délégué d'application spécifique que les objets d'application utilisent comme délégué. – TechZen
Les fichiers Nib sont conçus pour être modulaires et avoir une portée restreinte. Par conception, ils ne dépendent pas et ne peuvent pas voir l'application entière ou même l'objet d'application. En tant que tel, seule la pointe détenue par l'objet application lui-même (généralement MainWindo.nib) peut voir le délégué actif. – TechZen