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:
- Dans Interface Builder, créer un vide Cocoa Touch pointe de fichier (Fichier >
De nouvelles).- Faites glisser un UITableViewController objet à partir de l'Interface Builder
De la bibliothèque à la pointe de la fenêtre de document.- 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'.- 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.- 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.- Personnaliser l'affichage de la table dans Interface Builder.
- 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:
- Créé un fichier vide dans Interface Builder.
- Définir le Propriétaire du Fichier à la classe qui hérite de UITableViewController.
- Ajout d'une Vue de Table à la fenêtre de document.
- Définir l'Affichage de la Table de source de données et leur déléguer le Propriétaire du Fichier.
- Définir le Propriétaire du Fichier afficher à la Vue de la Table.
- Ajouté un tableView propery dans l'Identité volet de type UITableView.
- 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.
Merci, donne d'excellents résultats
OriginalL'auteur Senseful | 2009-10-07
Vous devez vous connecter pour publier un commentaire.
Où ajouter de la méthode ci-dessus?
OriginalL'auteur Senseful
J'ai eu ce même problème hier soir, et trouvé ce post en essayant de trouver la réponse. J'ai fini par le résoudre.
Fondamentalement, j'avais ouvert le mauvais fichier XIB (j'espère main_window.xib, pas le point de vue des contrôleurs xib)
J'ai coupé tous les contrôles de mon principal xib, collé dans les contrôleurs xib, réaligné tout, rebranché tous les points de vente/d'actions et la mise en garde s'en alla 🙂
Espère que cela aide quelqu'un 🙂
OriginalL'auteur Matt
Aigle, lorsque vous créez un nouveau fichier, sélectionnez l'option "sous-classe UIViewController" icône. Il y a une case à cocher pour en faire un UITableViewController sous-classe juste au-dessus de la case à cocher pour inclure le fichier XIB.
OriginalL'auteur No Surprises
Vous avez deux endroits où votre UITableViewController affiche dans Interface Builder.
(1) Il s'affiche dans le bec avec les contrôleurs de nom propre.
(2), Il apparaît comme un objet de contrôleur dans la plume d'un autre objet, généralement le MainWindow.
Votre problème est à (2). Il y a deux façons de définir la tableview pour un UITableViewController dans Interface builder. Tout d'abord, vous pouvez créer une UITableView sous le contrôleur dans la MainWindow de se connecter au contrôleur de la vue de la propriété. Deuxièmement, vous pouvez afficher l'inspecteur dans le volet attributs et dans le popmenu liste "NibName", sélectionnez le nom de l'contrôleurs de plume.
Vous ne pouvez pas utiliser les deux systèmes à la fois parce que la première des charges en vue de la MainWindow plume fichier et deuxième charge un complètement indépendant de la vue à partir du contrôleur séparé plume de fichier.
C'est l'un de ceux affolant les erreurs à l'aide de Interface Builder qui rend si difficiles à dépister.
OriginalL'auteur
Plutôt que de faire tout ça, je voudrais utiliser le "Nouveau Fichier" de l'INTERFACE iPhone modèle pour créer un TableViewController avec xib fichier option cochée. Ensuite, vous obtenez un contrôleur et un fichier xib tous câblé correctement l'ensemble.
OriginalL'auteur Kendall Helmstetter Gelner