UITableView, scrollViewDidScroll yönteminde UIScrollView ile aynıdır.
Sonsuz kaydırmayı öykünmesi kolay. çift
bu kafa ve kuyruk katına masa ve onlar eğilimindedir katına tablonun 2 bölümünün 1 kısmı arasında kullanıcı geçiş yapmak benim aşağıdaki kodu kullanabilirsiniz dairesel masayı
taklit etmek üzere birleştirilen böylece dizisi tablonun başlangıcına veya sonuna ulaşmak için.
:
/* To emulate infinite scrolling...
The table data was doubled to join the head and tail: (suppose table had 1,2,3,4)
1 2 3 4|1 2 3 4 (actual data doubled)
---------------
1 2 3 4 5 6 7 8 (visualising joined table in eight parts)
When the user scrolls backwards to 1/8th of the joined table, user is actually at the 1/4th of actual data, so we scroll instantly (we take user) to the 5/8th of the joined table where the cells are exactly the same.
Similarly, when user scrolls to 6/8th of the table, we will scroll back to 2/8th where the cells are same. (I'm using 6/8th when 7/8th sound more logical because 6/8th is good for small tables.)
Thus, when user reaches 1/4th of the first half of table, we scroll to 1/4th of the second half, when he reaches 2/4th of the second half of table, we scroll to the 2/4 of first half. This is done simply by subtracting OR adding half the length of the new/joined table.
*/
-(void)scrollViewDidScroll:(UIScrollView *)scrollView_
{
CGFloat currentOffsetX = scrollView_.contentOffset.x;
CGFloat currentOffSetY = scrollView_.contentOffset.y;
CGFloat contentHeight = scrollView_.contentSize.height;
if (currentOffSetY < (contentHeight/8.0)) {
scrollView_.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));
}
if (currentOffSetY > ((contentHeight * 6)/ 8.0)) {
scrollView_.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));
}
}
Not; - Bu kodu NT Zaman Tablosu (Lite) adlı uygulamalarımdan birinde kullandım. Önizleme istiyorsanız, uygulamayı kontrol edebilirsiniz: https://itunes.apple.com/au/app/nt-time-table-lite/id528213278?mt=8
Tablonuz bazen çok kısa olabilir, yukarıdaki yöntemin başında veri sayısının söz konusu olduğu zaman yöntemden çıkmak için bir if mantığı ekleyebilirsiniz. örnek 9'dan küçüktür.
Sanırım bu kadar. Burada yapılacak hiçbir şey zarif değil; En azından satırların hepsi sanal, böylece onları anında yapabilirsiniz. – drw
@drw: Lütfen şu bağlantıyı takip edin: [link] (http://stackoverflow.com/questions/5675535/how-to-implement-cyclic-scrolling-on-tableview) –
Aşağıdaki cevabıma bakın. Kodu var. Bu kodu uzun zamandır kullanıyorum. İşe yarıyor. –