2014-04-26 7 views
5

समस्या यूआई प्रकट होती है और फिर अपडेट हो जाती है: झटकेदार प्रभाव को प्रभावित करना।[self.tableview reloadData]; झिलमिलाहट

मैं चाहता हूं कि यूआई ऐप में प्रवेश करने के बाद केवल एक बार अपडेट किया जाए, इस प्रकार मैंने व्यूडिडलोड में पुनः लोड किया है .. यहां कोड है .. कोई मदद इस झटके को कैसे हटा सकती है ... कुछ कोड उदाहरण मदद करेंगे।

- (void)viewDidLoad { 

[super viewDidLoad]; 

self.myTableView.dataSource = self; 
self.myTableView.delegate = self; 

PFQuery * getCollectionInfo = [PFQuery queryWithClassName:@"Collection"]; // make query 

[getCollectionInfo orderByDescending:@"updatedAt"]; 
[getCollectionInfo setCachePolicy:kPFCachePolicyCacheThenNetwork]; 

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(queue, ^{ 
    [getCollectionInfo findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     if (!error) { 
      CollectionQueryResult = (NSMutableArray *)objects; 
       [self.tableView reloadData]; 


      // whenevr get result 
     } 
     else{ 
      //no errors 
     } 


    }]; 
}); 
+0

आपकी समस्या क्या है, कृपया अपना प्रश्न विस्तृत करें। – iPatel

+0

समस्या यूआई प्रकट होती है और फिर अपडेट हो जाती है: झटके को प्रभावित करना। – user3576169

+0

मुझे पूर्ण टेबलव्यू झिलमिलाहट के बिना कोशिकाओं को अपडेट करने की आवश्यकता है .. मैंने यह http://stackoverflow.com/questions/11631104/uitableview-reloaddata-how-to-stop-flicker को फिर से पेश किया लेकिन – user3576169

उत्तर

1

आशा है कि नीचे लाइनों में देरी और मुद्दों

dispatch_async(dispatch_get_main_queue() 
        , ^{ 
[self.tableView reloadData]; 

}); 
+0

अभी भी फ़्लिकर्स की मदद नहीं की .. – user3576169

+0

वास्तव में तालिकादृश्य केवल डिफ़ॉल्ट रूप से दृश्यमान कोशिकाओं को पुनः लोड करें –

+1

** मुझे समझ में आता है कि मुझे ऐसा करने की आवश्यकता है। ** '[self.tableView reloadRowsAtIndexPaths: [self.tableView indexPathsForVisibleRows] के साथ RowAnimation: UITableViewRowAnimationNone];' ** लेकिन इससे कोई त्रुटि मिलती है: ** 'NSInternalInconsistencyException', कारण: 'अमान्य अद्यतन: खंड 0 में पंक्तियों की अमान्य संख्या – user3576169

1

आपका डाउनलोड, अतुल्यकालिक है दृश्य दिखाया गया है पहले तो यह पूरा नहीं होगा झिलमिलाते में आप कर सकते हैं। तो, जो भी आपके पास CollectionQueryResult में प्रदर्शित होगा, प्रदर्शित होगा।

आप कर सकते थे या तो:

  1. साफ़ CollectionQueryResult तो तालिका एक अद्यतन
  2. CollectionQueryResult और objects तुलना मिलता है, तो ही दिखाई कोशिकाओं जहां डाटा बदल गया है अद्यतन आप तक तैयार नहीं हुआ है (सेट करने से पहले CollectionQueryResult)

ध्यान दें कि विकल्प 2 के लिए आप भी CollectionQueryResult और objects की गिनती की तुलना और फिर सम्मिलित/आर हटाने की आवश्यकता होगी उचित रूप से तालिका दृश्य से ows। विकल्प 2 का पूरा बिंदु reloadData पर कॉल नहीं करना है, इसलिए आपको बहुत अधिक काम करने की आवश्यकता है ...

यदि आप दृश्यमान कक्ष प्राप्त करते हैं और उन्हें सीधे अपडेट करते हैं तो आप reloadRowsAtIndexPaths पर कॉल करने से भी बच सकते हैं (जो किसी भी एनीमेशन से बचाता है हो रहा)। cellForRowAtIndexPath: देखें।

+0

** मैं समझता हूं कि मैं समझता हूं ऐसा करने की ज़रूरत है। ** '[self.tableView reloadRowsAtIndexPaths: [self.tableView indexPathsForVisibleRows] के साथ RowAnimation: UITableViewRowAnimationNone];' ** लेकिन यह एक त्रुटि देता है: ** 'एनएसआईएननल इन्फॉन्सिस्टेंसी अपवाद', कारण: 'अमान्य अपडेट: अमान्य संख्या धारा 0 में पंक्तियां। – user3576169

+0

इस त्रुटि से कैसे निपट सकता है, coz मैं नंबर पास नहीं कर रहा हूं। मैन्युअल रूप से – user3576169

+0

पंक्तियों की संख्या प्रतिनिधि विधि में वापस आती है। यदि आप 'CollectionQueryResult' को अपडेट करते हैं तो आपको 'CollectionQueryResult' की पुरानी और नई सामग्री के बीच अंतर के आधार पर' reloadRowsAtIndexPaths', 'insertRowsAtIndexPaths' और' DeleteRowsAtIndexPaths' को कॉल करने की आवश्यकता है। – Wain

3

आप [self.tableView reloadData] के बजाय पुनः लोड प्रक्रिया विधि क्यों नहीं कहते हैं;

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; 
2

cellForRowAtIndexPath प्रतिनिधि विधि का संदर्भ लें। आप कुछ ऑपरेशन कर रहे हैं जो एक झटका पैदा कर सकता है। मेरे मामले में, मैं एनीमेशन के साथ एक छवि दृश्य की एक छवि सेट कर रहा था। इसलिए जब भी मैं टेबल को फिर से लोड करता हूं, तो वह उस एनीमेशन के कारण झटकेदार था।

मैंने उस एनीमेशन को हटा दिया और मेरे लिए काम किया ..

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