2011-03-28 14 views
16

मैंने अपनी तालिका में "रीफ्रेश करने के लिए खींचें" लागू किया है Iphone ऐप ट्विटर या फेसबुक की तरह देखें।
मेरी तालिका दृश्य में मुख्य दृश्य वाले अनुभाग हैं। जब tableView "रीफ्रेश मोड" में होता है, तो जब मैंने तालिका खींच ली है रीफ्रेश करने के लिए, मैं सामग्री सेट करता हूं तालिका की स्थापना तालिका को प्रदर्शित करने के लिए देखें एक निश्चित तरीका देखें। इस समय, यदि मैं तालिका को ऊपर दबाता हूं, तो UITableView के शीर्षलेख अब UITableView के शीर्ष पर स्क्रॉल नहीं कर रहे हैं। निम्नलिखित स्क्रीनशॉट देखें:UITableView में सेक्शन हेडर जब टेबलव्यू का इन्सेट बदल गया है

screenshot 1

screenshot 2

मैं कैसे स्क्रॉल कि हेडर बनाने के लिए ठीक कर सकते हैं उम्मीद की तरह?

धन्यवाद!

उत्तर

25

सामग्री का उपयोग करते समय मुझे वही समस्या थी, स्क्रॉलव्यूडस्क्रॉल में कोड जोड़कर इसे ठीक करें और सामग्री को अपडेट करने के लिए "लोडिंग" स्थिति में गतिशील रूप से प्रारंभ करें।

if(refreshState == kLoading) { 
    if(scrollView.contentOffset.y >= 0) 
     scrollView.contentInset = UIEdgeInsetsZero; 
    else 
     scrollView.contentInset = UIEdgeInsetsMake(MIN(-scrollView.contentOffset.y, kPullHeight), 0, 0, 0); 
}  
+0

धन्यवाद, कोशिश करने के लिए इंतजार नहीं कर सकता !! क्या आप मुझ पर कुछ रोशनी डाल सकते हैं और मुझे बता सकते हैं कि KPullHeight क्या है? – MartinMoizard

+0

बढ़िया! धन्यवाद, यह मेरी जरूरतों के लिए यह सही पाया। – Ariel

+8

यह चाल स्क्रॉलिंग को अपनी जड़ता खो देती है जब उपयोगकर्ता रीफ्रेश दृश्य को खींचने पर खींचता है जब उपयोगकर्ता अपनी अंगुली को उठाता है। – samvermette

1

जब ऐसा कर रही है, मैं आमतौर पर बजाय UITableView में तालिका चौड़ा शीर्षक का प्रयोग:

@property(nonatomic, retain) UIView *tableHeaderView 

... contentInsets के बजाय। सामग्री के साथ बहुत सारी बग्स आईओएस 2.x दिनों में वापस आ गईं, और मुझे यकीन नहीं है कि वे सभी ठीक हो गए हैं। क्या कोई कारण है कि आप टेबल हेडर का उपयोग नहीं कर सकते हैं?

+1

आप tableHeaderView का उपयोग कर एक पुल-टू-ताज़ा UITableView के एक कार्यान्वयन है? – MartinMoizard

1

पुश व्यू कंट्रोलर जोड़ने के लिए इस तरह से प्रयास करें।

  • तालिका दृश्य नियंत्रक बनाएं और इसे मौजूदा दृश्य नियंत्रक के उप दृश्य के रूप में जोड़ें।
  • फिर अपने टेबल व्यू को असाइन करें और कंट्रोलर को टेबलव्यू नियंत्रक के गुणों में रीफ्रेश करें।

    UITableViewController *newTableViewController = [[UITableViewController alloc] init]; 
    newTableViewControler.tableView = <yourTableView>; 
    
    <yourRefreshController> = [[UIRefreshControl alloc] init]; 
    [<yourRefreshController> addTarget:self 
              action:@selector(refreshTableView:) 
            forControlEvents:UIControlEventValueChanged]; 
    
    newTableViewController.refreshControl = _chatListRefreshControl; 
    [self addChildViewController:newTableViewController]; 
    
संबंधित मुद्दे