Comment utiliser UITableView à l'intérieur de UIScrollView et de recevoir une cellule, cliquez sur?
J'ai DiscountListTableViewController
qui est montré comme un écran séparé de mon application. Mais il y a un autre écran (PlaceDetailsViewController
) où j'ai besoin de montrer des réductions liées à la partie inférieure.
Actuellement, PlaceDetailsViewController.view
a UIScrollView
comme un conteneur et je suis en ajoutant DiscountListTableViewController.tableView
à ce UIScrollView.content
conteneur dans viewDidLoad
de PlaceDetailsViewController
. Cela fonctionne, et la vue de la table est affichée correctement, mais impossible de recevoir des cellules clics.
Je sais UITableView
hérite de UIScrollView
et c'est en quelque sorte pas conseillé (mais pas seulement). Cependant, à partir de couplage lâche point de vue, chaque composant doit être conçu de manière qu'il pourrait être utilisé indépendamment d'ailleurs, et c'est DiscountListTableViewController
dans mon cas.
PlaceDetailsViewController
composant juste besoin DiscountListTableViewController
comme-est, donc il n'y a pas de logique de la raison pourquoi il ne peut pas être utilisé directement. Toutes les suggestions?
- Quelle est la raison de mettre UITableView en UIScrollView si UITableView est UIScrollView?
- La raison en écrit dans la question
- Faire le tableau de points de vue réellement besoin de scroll, ou sont toutes les lignes visibles en permanence, et vous avez juste besoin d'être en mesure de select chaque ligne?
- Non, il n'a pas besoin de faire défiler et à la vue de la table est toujours visible parce que je suis le redimensionnement tableView à l'égard de son contenu.
- Il pourrait vous aider - stackoverflow.com/questions/3422915/...
Vous devez vous connecter pour publier un commentaire.
Réponse : ne pas le faire.
UITableview
est hérité de l' ---->UIScrollView : UIView : UIResponder : NSObject
Apple dit :
Pas conseillé ? Il se sentait comme "ne pas faire" après la lecture de ce.Le imprévisibilité n'est jamais un bon comportement de l'application
Va vous raconter comment les résoudre. Ne sous-classé UIScrollView et utilisé comme conteneur de vue en PlaceDetailsViewController:
Aussi, n'oubliez pas de mettre PlaceDetailsContainerUIScrollView.delaysContentTouches = OUI et PlaceDetailsContainerUIScrollView.canCancelContentTouches = NO.
Aussi, besoin petit correctif dans DiscountListTableViewController méthode:
C'est peut-être en retard, mais j'ai réussi à le faire par:
ne devriez pas faire cela parce que UITableView est une sous-classe de UIScrollView et selon apple docs.
utilisez simplement mise en page automatique de plus facile que de vous calculer chaque élément de taille et de stopper le tableau de défilement de le faire.
apple Docs:
Vous ne devrait pas embarquer UIWebView ou UITableView objets dans UIScrollView objets. Si vous le faites, un comportement inattendu peut résulter en raison des événements tactiles pour les deux objets peuvent être mélangées et traitées à tort.