2009-04-17 4 views
14

Lorsque je crée un exemple d'application (par exemple, démarrer avec une application de barre d'onglets ou autre), dans mon fichier MainWindow.xib, 5 éléments apparaissent: propriétaire du fichier, premier répondant, délégué de l'application , Fenêtre et contrôleur de barre d'onglets.iPhone Interface Builder et les délégués

Si je crée un autre fichier .xib et que je lui attribue un délégué, et que je place ce propriétaire sur mon nouveau délégué, je ne vois PAS "NewDelegateFile" dans la liste des objets ...?) pour ce .xib.

Cela n'a pas de sens pour moi, et je pense que c'est une grande partie de la raison pour laquelle je n'arrive pas à comprendre le développement de l'iPhone.

Quelqu'un veut-il prendre le temps de m'expliquer cette petite particularité?

+1

J'ai encore posé presque la même question http://stackoverflow.com/questions/1911916/placeholder-objects-in-interface-builder. Ces réponses devraient fournir plus de détails et être moins déroutantes. – Casebash

Répondre

24

Le propriétaire du fichier n'est pas un objet réel dans le fichier xib. C'est un objet proxy. Il représente l'objet qui deviendra le propriétaire du xib quand il sera chargé. Le premier répondant et le délégué de l'application sont également des mandataires. Le premier répondeur est l'objet actuellement en tête de la chaîne du répondeur. Lorsque l'état de l'application change, un autre objet peut être le premier répondeur. Vous utilisez cet objet proxy pour connecter des éléments tels que le menu Fichier-> Enregistrer à tout objet responsable qui le gère à un moment donné.

L'App Delegate est un objet réel. Il arrive à vivre quand le xib est chargé. Comme vous pouvez le voir dans Interface Builder, il est connecté à la sortie déléguée du propriétaire du fichier. L'application charge le MainWindow.xib, il est donc le propriétaire du fichier.

D'autres fichiers xib sont généralement chargés via un objet délégué. Cet objet délégué est le propriétaire du fichier. Mais le délégué lui-même est instancié à partir du code. Il n'est pas chargé depuis le xib. C'est pourquoi il n'apparaît pas dans Interface Builder.

Les fichiers xib contiennent des objets sérialisés réels. Le propriétaire du fichier et le premier répondeur sont des exceptions. Ils représentent un autre objet déjà existant.

Le propriétaire du fichier (souvent un UIViewDelgate dans les fichiers non MainWindow.xib) est le poulet. Le xib est l'œuf. Le poulet lui-même n'est pas contenu dans l'œuf.

Un peu long. J'espère que cela aide.

+1

Je n'ignorais pas cette réponse. Il m'a juste fallu des jours de lecture et de lecture encore et encore pour le comprendre. Et je pense que oui, maintenant. Merci beaucoup. C'est juste un peu incompatible avec la façon dont mon esprit pense que ça devrait l'être, mais je vais continuer à faire de la tête en essayant de penser ainsi. Merci beaucoup pour ta réponse. –