iphone - access uitableviewcontroller de uitableviewcell
J'ai une structure comme ceci....
UITableViewController -> UITableViewCell -> UIView
J'ai besoin de la UIView
pour accéder à une table de hachage (NSMutableDictionary
) dans le UITableViewController
Est-il un moyen d'accéder à la ViewController tout simplement de la ViewCell (à l'aide de [ViewCell superview] de toute évidence ne fonctionne pas) ....Dois-je aller vers le bas à travers l'AppDelegate à l'aide de [[UIApplication sharedApplication] delegate]
?
Merci!
source d'informationauteur adam
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude de maintenir une référence faible de mon UIView à mon UIViewController si j'ai besoin d'un, le plus souvent par la création d'une méthode de quelque chose comme ceci:
Vous pouvez également utiliser un modèle de délégué si vous voulez un plus découplée de la solution. J'ai tendance à penser que c'est overkill pour une vue et de son contrôleur, mais je voudrais l'utiliser avec un système de contrôleurs et subcontrollers.
Cela devrait faire l'affaire:
Vous pouvez créer une catégorie pour cela:
Alors vous pouvez simplement accéder à
self.tableViewController
de la cellule elle-même (en supposant que vous avez inclus dans cette catégorie). Vous pouvez avoir besoin de convertir votre table view controller classe tho.Depuis le UITableViewCell est quelque part dans le point de vue de la hiérarchie, vous pouvez accéder à votre vue de la racine par la récupération de la vue.superview jusqu'à ce que vous obtenez. Si vous ne voulez pas ajouter des propriétés à votre vue, vous pouvez accéder à son contrôleur à travers le point de vue de l'
nextResponder
de la propriété. Vous aurez à le jeter aux quelle que soit la classe dont vous avez besoin, bien sûr, et il peut ne pas être le plus propre de l'utilisation de la propriété. C'est un moyen rapide-n-sale hack pour l'obtenir.Si vous cherchez quelque chose que vous pouvez montrer à vos enfants si, j'avais pour objectif de passer par l'intermédiaire de votre délégué d'application, ou si votre vue-contrôleur se trouve être un singleton, juste de mettre en œuvre le modèle de conception singleton et y accéder par qui.
Une certaine modification de Kare Morstol réponse :
La hiérarchie de tableviewcell est en iOS 5.0(ma version de test)
Ainsi, l'utilisation de la cellule.superview pour obtenir tableview. Et la tableview et tableviewController a un rapport du délégué, la source de données par défaut.
Vous pouvez obtenir tableviewController de référence par
tableview.delegate
outableview.dataSource
.