2012-05-23 17 views
8

मेरे पास एन अनुभागों वाला एक टेबल है। प्रत्येक खंड में एक पंक्ति होती है। तालिका के लिए सूचकांक पथ कैसे बनाएं? वहाँ एक विधि है कि सभी दृश्य पंक्तियों [self.tableView indexPathsForVisibleRows] सूचकांक पथ बनाने के लिए मैं कुछ इसी तरह की तरह indexPathsForAllRowsसभी पंक्तियों और uitableview के लिए सभी अनुभागों के लिए इंडेक्सपैथ कैसे बनाएं?

मैं यह सब तालिका में केवल डेटा अद्यतन करने की आवश्यकता की जरूरत है की अनुमति देता है, शीर्षलेख और पादलेख साथ क्योंकि विधि [self.tableView reloadData]; अद्यतन सभी तालिका है । यही कारण है कि मुझे reloadRowsAtIndexPaths

+0

आप सभी पंक्तियों आवश्यकता क्यों है? –

+0

मैंने प्रश्न – Alex

+1

अद्यतन किया है आपको ऑफ-स्क्रीन पंक्तियों को अपडेट करने की आवश्यकता क्यों है? वे cellForRowAtIndexPath में अपडेट हो जाएंगे: जब तक आपका मॉडल अपडेट किया गया है –

उत्तर

10

का उपयोग करना है, आपको सभी पंक्तियों को पुनः लोड करने की आवश्यकता नहीं है। आपको केवल दृश्यमान कोशिकाओं को फिर से लोड करने की आवश्यकता है (यही कारण है कि indexPathsForVisibleRows मौजूद है)।

ऑफ-स्क्रीन वाली कोशिकाएं cellForRowAtIndexPath: में दिखाई देने के बाद उनका नया डेटा प्राप्त हो जाएंगी।

+0

मैंने इस तरह से indexPathForVisibleRows का उपयोग करने के बारे में कभी सोचा नहीं है। – Mark

3

यहाँ स्विफ्ट 3

func getAllIndexPaths() -> [IndexPath] { 
    var indexPaths: [IndexPath] = [] 

    // Assuming that tableView is your self.tableView defined somewhere 
    for i in 0..<tableView.numberOfSections { 
     for j in 0..<tableView.numberOfRows(inSection: i) { 
      indexPaths.append(IndexPath(row: j, section: i)) 
     } 
    } 
    return indexPaths 
} 
3

में समाधान मैं @Vakas उत्तर के आधार पर एक UITableView विस्तार किया जाता है। इसके अलावा वर्गों और पंक्तियों खाली UITableView रों के लिए दुर्घटनाओं को रोकने के लिए > 0 लिए जाँच की जानी चाहिए:

extension UITableView{ 
    func getAllIndexes() -> [NSIndexPath] { 
     var indices = [NSIndexPath]() 
     let sections = self.numberOfSections 
     if sections > 0{ 
      for s in 0...sections - 1 { 
       let rows = self.numberOfRowsInSection(s) 
       if rows > 0{ 
        for r in 0...rows - 1{ 
         let index = NSIndexPath(forRow: r, inSection: s) 
         indices.append(index) 
        } 
       } 
      } 
     } 
     return indices 
    } 
} 
संबंधित मुद्दे