didSelectRowAtIndexPath ne détecte qu'une partie de la cell?
Salut,
j'ai un tableView par dessus un autre tableView. Quand je fais un touch sur une cell, les tableView scrollent. Mais seule la moitié gauche de la cell détecte le touch, sauriez-vous pourquoi?
La fonction est comme ceci :
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
maskTableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
currentIndexPath = indexPath.row
}
Seule la première cell du maskTableView est visible, ce qui permet de faire un design différent pour la première cell. Le deuxième tableView est visible à partir de la 2e cell.
Je n'explique pas pourquoi toute la partie droite de ma cell ne répond pas au touch.
La vue de la cell est un xib, qui fait 320 de large, pour tester sur l'iphone 5. Toute la cell s'affiche bien, mais le touch ne réagit pas sur la partie droite.
Auriez-vous une idée?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pourquoi se compliquer la vie comme ça et superposer des tableview (ce qui est une idée à la fois saugrenue et mauvaise) ? Pourquoi ne pas avoir une seule UITableView et plusieurs reuseIdentifier différents entre la première cell et les suivantes, pour avoir un design différent pour cette première cell (puisque chaque reuseIdentifier est associé à un XIB " ou à une classe de TableViewCell " et donc un design qui lui est propre, c'est justement fait pour...
Il serait peut-être bon de (re)lire le TableView Programming Guide for iOS et en particulier la section "A closer look at TableView cells" qui explique comment les customiser, et aussi les sections qui parlent du concept des reuseIdentifier et de l'association d'un reuseIdentifier donné à un XIB (avec son design spécifique et tout)...
Voilà une image d'exemple :
Utiliser différentes cells d'accord, mais comment faire en sorte qu'il y ait un mask sur l'espace équivalent à une cell (comme dans l'espace gris), quand on scroll?
Je ne sais pas si c'est ça dont tu parlais, mais j'ai essayé avec :
un UIView avec une constraint top-44 (la height de la cell), j'ai mis un IBOutlet sur l'attribut Top de cette view, et ma fonction scroll est celle-ci :
Ce qui me donne ces logs :
Mais mon "row + 1" pour trouver la cell ne fonctionne pas, quand je scroll vers le bas, la vue qui est censée descendre n'est pas visible. Quand je remonte dans le tableView, chaque cell a bien cette viewAbove avec l'attribut top à 0, ce qui fait qu'elle recouvre bien toute la cell. Mais pas quand on scroll vers le bas.
Pourquoi utilises-tu une UIScrollView ? Je ne comprend pas du tout ce que tu essaies à faire. Comme dit Ali, c'est une conception bizarre - arrêtes-toi de montrer le code et, par contre, s'il te plaà®t nous montrer un diagramme, bien annoté.
Quand tu scrolles le tableView, les images du scrollView scrollent également. Le scrollView est en haut, le tableView en bas, les deux sont séparés. C'est l'application "sushishop" sur l'apple store.
J'utilise la méthode "scrollViewDidScroll" pour le tableView également pour bloquer le scroll à partir d'un certain nombre de cell, car je veux que la dernière cell monte jusqu'en haut du tableView, et laisser de l'espace en-dessous (les cells "emptyCell", avec 29 cells alors que j'utilise en fait que les 14 premières, simplement pour que le tableView scroll suffisamment).
Dis-moi si ce n'est pas clair
J'avoue ne pas comprendre ce que tu souhaites réellement faire, même avec une image (bon, ok, j'ai pas lu le code).
Par contre, pour essayer de comprendre pourquoi seule une partie du touch ne fonctionne, regarde peut-être du côté de l'éclatement 3D que propose XCode 6, cela te permettra peut-être de voir s'il n'y a un pas élément en rab' qui empêche le touch (ou une size d'un élément foireuse).