2011-05-24 13 views
9

जब किसी तालिका में कई पंक्तियां होती हैं, तो उपयोगकर्ता तालिका को ऊपर/नीचे फ्लिक कर सकता है। यह एक स्क्रॉलिंग एनीमेशन बनाता है जो फ्लिक इशारा की गति/लंबाई के आधार पर एक निश्चित लंबाई है। स्क्रॉलिंग बंद होने पर तालिका में कौन सी पंक्तियां दिखाई देगी, तो विश्वसनीय रूप से गणना करना संभव है यदि कोई और उपयोगकर्ता इंटरैक्शन नहीं है?यूआईटीबल व्यू स्क्रॉलिंग को किस पंक्ति में गणना करेगा?

+0

अच्छा सवाल है, लेकिन जहां तक ​​मैं कहने में सक्षम हूं .. नहीं, ऐसा लगता है कि यह एक जटिल ऑपरेशन होगा जो आसपास रहने के लिए होगा। –

उत्तर

5

आईओएस 5.0 में और बाद में UIScrollViewDelegatescrollViewWillEndDragging:withVelocity:targetContentOffset: नामक एक नया एपीआई है। इस नई विधि के साथ, स्क्रॉल की स्टॉप स्थिति की गणना की जा सकती है और यहां तक ​​कि संशोधित भी किया जा सकता है, जैसा कि Video Session 100: What's New in Cocoa Touch में बताया गया है, नौवें मिनट के आसपास।

-1

मुझे नहीं पता कि आप कितनी पंक्तियां दिखाएंगे, यह निर्धारित कर सकते हैं कि आप कितनी पंक्तियां दिखाएंगे, लेकिन आप हमेशा यह जान सकते हैं कि कितनी पंक्तियां दिखायी गई हैं। (। एक बार मेज बंद हो जाता है w/आगे नहीं छू) सुनिश्चित नहीं हैं कि मदद करता है, लेकिन यह आप इसे कैसे

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


    // make sure to declare your integer in your .h file and to also synthesize 
    //say this is your int "howManyRowsAreShowing" 
    howManyRowsAreShowing = indexPath.Row; 



    //the rest of the code below is generic table view code for example only 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Set up the cell... 
    NSString *cellValue = [listOfItems objectAtIndex:indexPath.row]; 
    cell.text = cellValue; 

    return cell; 
    } 
0

दिलचस्प सवाल करना होगा है ..... UITableViewDelegate रूप में अच्छी तरह UIScrollViewDelegate के अनुरूप है: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intf/UIScrollViewDelegate

कुछ प्रतिनिधि कॉलबैक हैं जिनका उपयोग आप यह जानने के लिए कर सकते हैं कि जब स्क्रॉलिंग कम हो जाती है, और कम हो जाती है।

आप शायद – scrollViewDidEndDecelerating: का उपयोग कर सकते हैं और उस बिंदु पर सेल ऊंचाइयों और सामग्री तालिका की सामग्री ऑफसेट संपत्ति का उपयोग करें (तालिका दृश्य उपclasses UIScrollView) और फिर मंदी के बाद दिखाई देने वाली कोशिकाओं की गणना करें।

1

UITableViewUIScrollView से विरासत और आप उस UIScrollViewDelegate तरीकों और तालिका दृश्य indexPathsForVisibleRows संपत्ति का उपयोग करके जांच करने के लिए जो सेल सूचकांक पथ पल स्क्रॉल बंद हो जाता है पर दिखाई दे रहे हैं पूरा कर सकते हैं।

आप प्रारंभिक स्थिति को भी रद्द कर सकते हैं जहां से मंदी शुरू हुई है, ताकि आप गणना कर सकें कि स्क्रॉल दिशा ऊपर या नीचे थी या नहीं, जो तब आपको बताएगी कि क्या सेल बंद हो जाएगा या यह पहला है या दृश्यमान के अंतिम।

int startDeceleratingPosition; 

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { 

    startDeceleratingPosition = scrollView.contentOffset.y; 

} 

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 

    BOOL isPositionUp = startDeceleratingPosition < scrollView.contentOffset.y;  

    NSArray *paths = [_myTableview indexPathsForVisibleRows]; 
    UITableViewCell *cell; 
    if(isPositionUp){ 
     cell = [_myTableview cellForRowAtIndexPath:[paths objectAtIndex:0]]; 
    } else { 
     cell = [_myTableview cellForRowAtIndexPath:[paths lastObject]]; 
    } 

} 

ऊपर कोड के बारे में एक महत्वपूर्ण सूचना है कि यह एक चर _myTableview के बजाय सिर्फ एक UITableView * के लिए प्रतिनिधि विधि चर scrollView कास्टिंग के रूप में तालिका दृश्य को इंगित करता है, हालांकि यह सिर्फ कार्यान्वयन विवरण है और प्रभावित नहीं होना चाहिए है यहां तर्क।

+0

आह, अगर स्क्रॉल की गति प्राप्त करने के लिए केवल एक विधि थी ... –

+0

लेकिन ऐसा कोई तरीका है ... UIScrollView में एक विलुप्त होने वाली संपत्ति है, जो इसके लिए निम्न स्तर का दृष्टिकोण होगा, और साथ ही साथ गलत परिणाम प्राप्त करने के बहुत अधिक संभावनाएं। http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html#//apple_ref/doc/uid/TP40006922-CH3-DontLinkElementID_2 –

+0

मंदी दर केवल स्थिर है गुरुत्वाकर्षण की तरह। स्क्रॉलिंग कब और कहाँ रुक जाएगी, और आगे की गणना करने के लिए आपको वर्तमान स्क्रॉलिंग गति को जानने की आवश्यकता है, और मुझे सार्वजनिक एपीआई के माध्यम से स्क्रॉलिंग की गति प्राप्त करने का कोई तरीका नहीं दिख रहा है। –

संबंधित मुद्दे