2011-11-08 13 views
23

मेरे पास UITableView और कुछ UITableViewCells है जो मैंने इंटरफ़ेस बिल्डर के माध्यम से मैन्युअल रूप से बनाया है। मैंने प्रत्येक सेल को outlet असाइन किया है, और xxx10 विधि में उन्हें UITableView से कनेक्ट कर रहा हूं। इस विधि में, मैं UITableView विधि में विशिष्ट कोशिकाओं को प्रकट करने के लिए switch(case) विधि का उपयोग करता हूं, मामले पर निर्भर करता है।जांचें कि UITableView में कोई विशिष्ट UITableViewCell दिखाई दे रहा है या नहीं

अब, मैं एक विशिष्ट सेल खोजना चाहता हूं और जांच सकता हूं कि वह UITableView के भीतर मौजूद है या नहीं। मैं तालिका दृश्य में सेल्स की सरणी प्राप्त करने के लिए विधि का उपयोग करता हूं: UITableView.visibleCells। मेरा सवाल है - मैं कैसे जांच सकता हूं कि सरणी में कोई विशिष्ट कक्ष मौजूद है या नहीं? क्या मैं उस आउटलेट का उपयोग कर सकता हूं जिसे मैंने इसे किसी भी तरह सौंपा है? - (सबसे अच्छा समाधान), या, क्या मैं पहचानकर्ता का उपयोग कर सकता हूं और कैसे?

धन्यवाद :)

उत्तर

74

ध्यान दें कि आप के रूप में अच्छी indexPathsForVisibleRows इस तरह से उपयोग कर सकते हैं:

NSUInteger index = [_people indexOfObject:person]; 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0]; 
    if ([self.tableView.indexPathsForVisibleRows containsObject:indexPath]) { 
     [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
          withRowAnimation:UITableViewRowAnimationFade]; 
    } 

आप indexPath है (और वास्तविक सेल की जरूरत नहीं है) यह सस्ता हो सकता है।

पीएस: _peopleNSArray इस मामले में मेरे बैकएंड के रूप में उपयोग किया जाता है।

+3

यह समाधान ज्यादातर मामलों में स्वीकृत समाधान से बेहतर है। – Envil

+0

यह सही काम करता है !! धन्यवाद:) – Gaurav

11

आप UITableView विधि का उपयोग कर सकते हैं। अन्यथा आपको सेल का एनएसआईएंडएक्सपैथ मिलेगा।

+1

यही काम की, धन्यवाद :) – ozking

+4

जब कोशिकाओं –

+0

धन्यवाद पुन: उपयोग यह काम नहीं करता है, यह काम करता है +1 – iLearner

16
if ([tableView.visibleCells containsObject:myCell]) 
{ 
    // Do your thing 
} 

इसका मतलब यह है कि आप सेल आप में रुचि रखते हैं, मैं तुम्हें सवाल से कर लगता युक्त एक अलग इंस्टेंस चर है, लेकिन यह स्पष्ट नहीं है कि।

+0

धन्यवाद, सोरिग ने मुझे दिए गए समाधान को लागू करने का यह एक और तरीका है :) – ozking

+0

यदि कोई सेल दिखाई देता है तो यह मूल प्रश्न का सही उत्तर है। स्वच्छ और सरल उत्तर के लिए धन्यवाद। –

0

आप अगर UITableViewCell दिख रहा है स्विफ्ट 3 में यह कर सकते हैं की जाँच करने के:

let indexPathToVerify = IndexPath(row: 0, section: 0) 
let cell = tableView.cellForRow(at: indexPathToVerify) 

if tableView.visibleCells.contains(cell) { 
    // the cell is visible 
} 
संबंधित मुद्दे