2010-06-14 7 views
1

J'ai 2 UITableViews sur mon écran. Lorsque l'utilisateur fait défiler 1 ... J'ai besoin que l'autre 1 défile également sur la même ligne. Je suppose que j'ai besoin de trouver une méthode "tableViewDidScroll" ... et en quelque sorte détecter une valeur "whichRowIsDisplayed" ... puis définir l'autre tableView à "displayThisSameRow".Création de 1 UITableView défilement vers la même ligne qu'un autre UITableView

Je ne trouve aucune de ces 3 méthodes dont j'ai besoin.

Aide!

(Edit: les deux tables auront toujours le même nombre de lignes)

Répondre

1

Si les lignes de vos tables sont à la même hauteur, vous pouvez utiliser les méthodes de UIScrollView pour régler directement le contentOffset.

Implémentez la méthode déléguée scrollViewDidScroll: pour les deux tables. Quelle que soit la table qui a appelé, définissez le paramètre contentOffset de l'autre table comme correspondant. Vous devez suivre lorsque vous définissez le décalage pour éviter les appels inutiles.

// table1, table2, tableBeingScrolled all members 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView != tableBeingScrolled) { 
    if (scrollView == table1) { 
     tableBeingScrolled = table2; 
     table2.contentOffset = table1.contentOffset; 
     tableBeingScrolled = nil; 
    } 
    if (scrollView == table2) { 
     tableBeingScrolled = table1; 
     table1.contentOffset = table2.contentOffset; 
     tableBeingScrolled = nil; 
    } 
    } 
} 

Si les tables ont des hauteurs différentes de ligne, vous pouvez utiliser la même technique, mais aurait besoin de plus de calculs pour comprendre ce décalage à affecter.

+0

> Vous devez effectuer un suivi lorsque vous définissez le décalage pour éviter les appels inutiles. < Je suppose que c'est là que le "tableBeingScrolled" entre en service. Où serait un bon endroit pour définir cette variable? Merci ... il semble fonctionner maintenant! – Susanna

Questions connexes