Un Fichier xib avec Plusieurs “Propriétaire du Fichier”s
J'ai trois différents UITableViews, chacun dans sa propre point de vue, accessibles via des onglets. Tous les trois tables, l'idéal serait de partager la même coutume UITableViewCell classe et .xib fichier.
J'ai commencé avec une table, la définition de la classe de l' .xib pour ma classe personnalisée et le Propriétaire du Fichier de l' .xib à la table parent UIViewController, qui fonctionne très bien. L'ensemble de la vue personnalisée code est dans la cellule de la classe (images d'arrière-plan basé sur une propriété définie par le contrôleur, personnalisé à la hauteur de la cellule sur la base du nombre de lignes de l'étiquette exige basé sur une cellule de la propriété fixées par le contrôleur, etc.).
Le résultat est sympa: la cellule est responsable de la présentation visuelle et de répondre aux actions de l'utilisateur sur la cellule de contrôle, alors que l'avis du contrôleur est responsable de la création des cellules et l'établissement de leurs données.
Maintenant que j'ai besoin de réutiliser la cellule dans d'autres tableaux, cependant, le fait que la coutume de la cellule .xib a un seul Propriétaire du Fichier est un problème. Plutôt que de dupliquer les .xib fichier, est-il un moyen simple de permettre à plusieurs contrôleurs de le posséder?
- Je suppose que je ne suis pas à la suite de votre problème à 100%. Êtes-vous à l'aide de
UITableView
déléguée méthode- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
? - Oui. Le problème est que l'autre point de vue, les contrôleurs n'ont pas accès à l' .xib de contrôle/propriétés avec un autre contrôleur de servir en tant que propriétaire.
- J'ai mon custom de la cellule xib 'Propriétaire du Fichier' ensemble de NSObject, et la "Cellule" de MyCustomTableViewCell.
Vous devez vous connecter pour publier un commentaire.
La plume du Propriétaire du Fichier n'est pas strictement appliqué. Au lieu de cela, il est seulement utilisé pour établir les points de vente et des actions, et de définir les liaisons dans Interface Builder. Vous pouvez charger une plume avec n'importe quel objet comme sa Propriétaire du Fichier, indépendamment de la classe définie dans le fichier nib. Quand la plume est chargé, il va envoyer des messages pour le Propriétaire du Fichier à re-établir des liaisons. Si le Propriétaire du Fichier objet ne reconnaît pas ces sélecteurs, vous aurez déclenché un "non reconnu sélecteur de" l'exception". Cela signifie que si votre plume lie certaines
UITableViewCell
à la "cellule" prise de son Propriétaire du Fichier, puis n'importe quel objet avec une "cellule" de la propriété peut charger que la plume. Vous avez juste besoin d'être prudent de ne pas utiliser ce comportement pour envoyer une inconnue sélecteur ou inattendu de sortie de classe.Dans votre cas, pensez à créer un seul
UIViewController
sous-classe pour agir en tant que le Propriétaire du Fichier de votre plume. Demandez à chacun de vos trois contrôleurs existants d'étendre ce point de vue contrôleur de la sous-classe. De cette façon, ils peuvent hériter le même ensemble de propriétés attendues par la plume de fichiers et de tous les charger en toute sécurité que plume tout en encore la définition de leur propre comportement.La vérifié répondre à cette question décrit deux approches pour charger des cellules de tableau de plume fichiers qui ne nécessitent pas de définir le Propriétaire du Fichier sur votre contrôleur spécifique. Ces approches vous permettent de réutiliser les cellules de différents propriétaires.
Un "partage" super classe en tant que propriétaire du fichier n'est pas toujours une bonne solution.
N'oubliez pas que vous pouvez toujours charger le xib dans votre point de vue, et d'établir des connexions sans l'aide de prise de courant, par exemple:
Je ne peux pas dire que c'est une solution propre, mais dans certains cas, pourrait mieux fonctionner que l'héritage .