La création d'un fichier nib pour une Table View Controller

J'essayais de suivre le La Vue de la Table Guide de Programmation pour iPhone OS mais avait de la difficulté à créer une nouvelle Table View Controller qui charge ses données à partir d'un fichier nib.

Plus précisément, j'ai essayé de suivre les étapes dans cette partie:

Si vous préférez charger la vue de table
géré par une table personnalisée-vue
contrôleur à partir d'une plume de fichier, vous devez
procédez de la manière suivante:

  1. Dans Interface Builder, créer un vide Cocoa Touch pointe de fichier (Fichier >
    De nouvelles).
  2. Faites glisser un UITableViewController objet à partir de l'Interface Builder
    De la bibliothèque à la pointe de la fenêtre de document.
  3. Enregistrer la plume de fichier dans votre répertoire de projet sous un nom approprié
    et, lorsque vous y êtes invité, sélectionnez votre
    projet de la plume fichier ajouté
    c'.
  4. Sélectionnez Table View Controller à la pointe de la fenêtre de document et ouvrez le
    L'identité volet de l'inspecteur. Ensemble
    la classe à votre tableau personnalisé-vue
    contrôleur de classe.
  5. Sélectionnez Propriétaire du Fichier à la pointe de la fenêtre de document et de définir sa classe
    l'identité de la table personnalisée-vue
    contrôleur de classe.
  6. Personnaliser l'affichage de la table dans Interface Builder.
  7. Sélectionnez la table-vue-contrôleur à la pointe de la fenêtre de document, ouvrez le
    Onglet attributs de l'inspecteur, et
    entrée (ou sélectionner) le nom de la plume
    fichier dans le champ Nom de Plume.

J'ai donc créé un nouveau UITableViewController sous-classe dans Xcode (appelé "MyTableViewController"), puis je suis allé dans de l'IB et de suivi de ces mesures. J'ai fait en sorte de relier toutes les Classe attributs avec le même nom que le UITableViewController sous-classe que j'ai fait dans Xcode comme il est dit dans les étapes.

Mais maintenant, je reçois le message d'avertissement suivant au bureau de l'IB:

"Ma Table View Controller" a à la fois de ses
"Visualiser" et "Nom de Plume" définir les propriétés.
Cette configuration n'est pas prise en charge.

Quand je lance l'application et poussez la table view controller, il semble, mais il semble comme rien n'est chargé à partir de la pointe de fichier (par exemple j'ai mis l'alpha à 0 au lieu de 1).

Aucune idée de ce que je fais mal?

Merci pour l'aide.


Voici quelques informations qui pourraient vous aider à mieux comprendre la situation.

J'ai remarqué quelques différences entre la création d'un UITableViewController avec le modèle (par exemple, par la création d'un nouveau système de Navigation-en fonction de l'Application) par rapport à la création d'un soi-même (par exemple en suivant les étapes ci-dessus). Je vais me référer à chaque que TemplateNib et CustomNib, respectivement, pour le rendre plus facile à comprendre les différences.

Dans TemplateNib, il a les objets suivants dans la fenêtre de document:

  • Propriétaire du fichier
  • Premier Intervenant
  • La Vue De La Table

Dans CustomNib, il a les objets suivants dans la fenêtre de document:

  • Propriétaire du fichier
  • Premier Intervenant
  • Mon Tableau Personnalisé-Vue-Contrôleur
    • La Vue De La Table

Une autre différence est dans le Propriétaire du Fichier les liens...

TemplateNib du Propriétaire du Fichier:

  • Points de vente
  • tableView -> Affichage de Tableau
  • vue -> Affichage de Tableau
  • De Référencement Des Points De Vente
  • source de données -> Affichage de Tableau
  • délégué -> Affichage de Tableau

CustomNib Propriétaire du Fichier:

  • Points de vente
  • vue -> (rien)

CustomNib Ma Table View Controller:

  • Points de vente
  • vue -> la Vue de la Table (c'est grisé, donc vous ne pouvez pas le supprimer)
  • De Référencement Des Points De Vente
  • source de données -> Affichage de Tableau
  • délégué -> Affichage de Tableau

Mise à jour:

J'ai essayé d'imiter la .xib fichier qui est créé par le modèle en suivant ces étapes:

  1. Créé un fichier vide dans Interface Builder.
  2. Définir le Propriétaire du Fichier à la classe qui hérite de UITableViewController.
  3. Ajout d'une Vue de Table à la fenêtre de document.
  4. Définir l'Affichage de la Table de source de données et leur déléguer le Propriétaire du Fichier.
  5. Définir le Propriétaire du Fichier afficher à la Vue de la Table.
  6. Ajouté un tableView propery dans l'Identité volet de type UITableView.
  7. Définir le Propriétaire du Fichier tableView propriété (que je viens de créer) à la Vue de la Table.

Toutefois, cela semble comme il n'est pas le charger à partir de la POINTE de fichier. (Je n'ai jamais mis le nom de la PLUME de fichiers n'importe où mais... est-il nulle part, j'ai besoin de le mettre ou faut-il regarder pour un avec le même nom?).

J'ai ensuite essayé primordial initWithNibName à charge à partir du nom de la pointe de fichier, et maintenant il ne semble pas charger à partir de la pointe de fichier. Cependant, si je regarde l' .m fichier de la TemplateNib table view controller, il n'a pas besoin de remplacer cette méthode, pourquoi est-ce? Je pense toujours que je suis en train de faire de la mauvaise façon de provoquer le Guide de Programmation n'ont rien dit à propos de le faire de cette façon.


Mise à jour:

J'ai essayé de comparer les deux .xib fichiers à l'aide d'un outil de comparaison, la seule différence significative entre les deux semble être:

<string key="superclassName">UITableViewController</string>
//and:
<reference key="NSSuperview"/>

Je ne vois aucune référence à la Plume de fichier dans le fichier d'origine n'importe où, il y a d'autres fichiers que je dois vérifier?


Mise à jour:

Il semble que la chose qui rend TemplateNib charge de la plume de fichier, c'est que dans la MainWindow.xib (nom par défaut donné par le modèle), le RootViewController est ajouté avec la POINTE de la propriété Nom ayant la valeur "RootViewController". En outre, sa classe est fixé à "RootViewController".

J'ai essayé de mettre un point d'arrêt dans les deux initWithNibName:bundle: et initWithStyle: sur le RootViewController, cependant, il n'est jamais là. Je suis un peu en se demandant comment la TableViewController est créé lorsque vous l'avez créé dans la MainWindow.xib comme ça.

J'ai aussi essayé d'ajouter le mon tableau personnalisé-vue-contrôleur de MainWindow.xib, la définition de la classe et la plume noms dans l'espoir qu'il se charge de la plume de fichier que j'ai précisé, mais il n'a même pas appeler iniWithNibName.

Je viens de courir dans le même bug. A quiconque de trouver une façon de réparer le fichier sans le recréer?
Merci, donne d'excellents résultats

OriginalL'auteur Senseful | 2009-10-07