क्या कोई तरीका यह जानने का कोई तरीका है कि कोई तालिकादृश्य कक्ष वर्तमान में दिखाई दे रहा है या नहीं? मेरे पास एक टेबलव्यू है जिसका पहला सेल (0) एक यूआईसर्चबार है। यदि कोई खोज सक्रिय नहीं है, तो ऑफ़सेट के माध्यम से सेल 0 छुपाएं। जब तालिका में केवल कुछ पंक्तियां होती हैं, तो पंक्ति 0 दिखाई दे रही है। यह निर्धारित करने के लिए कि पंक्ति 0 दिखाई दे रहा है या शीर्ष पंक्ति है या नहीं?निर्धारित करें कि कोई टेबलव्यू सेल दिखाई दे रहा है
उत्तर
UITableView
indexPathsForVisibleRows
कहा जाता है एक उदाहरण विधि है कि तालिका जो वर्तमान में दिखाई दे रहे हैं में प्रत्येक पंक्ति के लिए एक NSIndexPath
की NSArray
वस्तुओं वापस आ जाएगी है। आप इस विधि को किसी भी आवृत्ति के साथ जांच सकते हैं और उचित पंक्ति की जांच कर सकते हैं।
-(BOOL)isRowZeroVisible {
NSArray *indexes = [tableView indexPathsForVisibleRows];
for (NSIndexPath *index in indexes) {
if (index.row == 0) {
return YES;
}
}
return NO;
}
क्योंकि UITableView
विधि NSIndexPath
देता है, आप बस के रूप में आसानी से इस का विस्तार कर सकते हैं: उदाहरण के लिए, यदि tableView
अपनी मेज के लिए एक संदर्भ है, निम्न विधि आपको बता होगा या नहीं, पंक्ति 0 स्क्रीन पर है खंड, या पंक्ति/खंड संयोजन के लिए देखो।
यह visibleCells
विधि से अधिक उपयोगी है, जो तालिका सेल ऑब्जेक्ट्स की एक सरणी देता है। टेबल सेल ऑब्जेक्ट्स को पुनर्नवीनीकरण मिलता है, इसलिए बड़ी तालिकाओं में अंततः आपके डेटा स्रोत पर कोई सरल सहसंबंध नहीं होगा।
आईओएस 4:
NSArray *cellsVisible = [tableView indexPathsForVisibleRows];
NSUInteger idx = NSNotFound;
idx = [cellsVisible indexOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop)
{
return ([(NSIndexPath *)obj compare:indexPath] == NSOrderedSame);
}];
if (idx == NSNotFound)
{
करने के लिए tableview सेल जाँच दिख रहा है या लाइन के लिए इस कोड
if(![tableView.indexPathsForVisibleRows containsObject:newIndexPath])
{
// your code
}
यहाँ newIndexPath जाँच सेल के IndexPath है ..... का उपयोग नहीं
स्विफ्ट 3.0
if !(tableView.indexPathsForVisibleRows?.contains(newIndexPath)) {
// Your code here
}
मुझे चैट पर गिनती बरकरार रखने का आपका जवाब मिला धन्यवाद ... मैंने यहां एक ही सवाल पूछा http://stackoverflow.com/questions/12990128/what-is-ios-retain-do-at-backend लेकिन मुझे नकारात्मक अंक मिल गए .. :(भी, +1 के लिए यह .. –
एक और समाधान (जिसे यह भी जांचने के लिए इस्तेमाल किया जा सकता है कि कोई पंक्ति पूरी तरह से दिखाई दे रही है) यह जांचना होगा कि row
के लिए फ्रेम tableview
के दृश्यमान भाग के अंदर है या नहीं।
निम्न कोड में, ip
का प्रतिनिधित्व करता है NSIndexPath
:
CGRect cellFrame = [tableView rectForRowAtIndexPath:ip];
if (cellFrame.origin.y<tableView.contentOffset.y) { // the row is above visible rect
[tableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionTop animated:NO];
}
else if(cellFrame.origin.y+cellFrame.size.height>tableView.contentOffset.y+tableView.frame.size.height-tableView.contentInset.top-tableView.contentInset.bottom){ // the row is below visible rect
[tableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}
इसके अलावा cellForRowAtIndexPath:
का उपयोग कर काम करना चाहिए, क्योंकि यह एक nil
ऑब्जेक्ट यदि पंक्ति दिखाई नहीं देता है:
if([tableView cellForRowAtIndexPath:ip]==nil){
// row is not visible
}
स्विफ्ट संस्करण:
if let indices = tableView.indexPathsForVisibleRows {
for index in indices {
if index.row == 0 {
return true
}
}
}
return false
मैं उपयोग करता हूं स्विफ्ट 3.0
extension UITableView {
/// Check if cell at the specific section and row is visible
/// - Parameters:
/// - section: an Int reprenseting a UITableView section
/// - row: and Int representing a UITableView row
/// - Returns: True if cell at section and row is visible, False otherwise
func isCellVisible(section:Int, row: Int) -> Bool {
guard let indexes = self.indexPathsForVisibleRows else {
return false
}
return indexes.contains {$0.section == section && $0.row == row }
} }
शानदार सामान! – Fattie
ध्यान दें कि "कुछ हद तक दृश्यमान" दृश्यमान है। इसके अलावा, व्यूविल्लियर में, आपको indexPathsForVisibleRows
से झूठी सकारात्मकता मिल सकती है क्योंकि लेआउट प्रगति पर है, और यदि आप अंतिम पंक्ति को देख रहे हैं, तो layoutIfNeeded()
पर कॉल करने से आपको टेबल के लिए मदद नहीं मिलेगी। आप viewDidAppear
में/बाद में चीजों की जांच करना चाहेंगे।
यह स्विफ्ट 3.1 कोड अंतिम पंक्ति पूरी तरह से दिखाई देने पर स्क्रॉल अक्षम कर देगा। इसे DidAppear में/बाद में कॉल करें।
let numRows = tableView.numberOfRows(inSection: 0) // this can't be in viewWillAppear because the table's frame isn't set to proper height even after layoutIfNeeded()
let lastRowRect = tableView.rectForRow(at: IndexPath.init(row: numRows-1, section: 0))
if lastRowRect.origin.y + lastRowRect.size.height > tableView.frame.size.height {
tableView.isScrollEnabled = true
} else {
tableView.isScrollEnabled = false
}
- 1. यह निर्धारित करने के लिए कि कोई विशिष्ट DOM तत्व दिखाई दे रहा है या नहीं?
- 2. jQuery - जांचें कि क्या बच्चा div दिखाई दे रहा है
- 3. जांचें कि UITableView में कोई विशिष्ट UITableViewCell दिखाई दे रहा है या नहीं
- 4. CKEditor: बटन दिखाई दे रहा है
- 5. नेस्टेड फॉर्म दिखाई नहीं दे रहा है!
- 6. osmdroid नक्शा दिखाई नहीं दे रहा है
- 7. UICollectionView दिखाई नहीं दे रहा है
- 8. यह निर्धारित करने के लिए कि कोई तालिका पंक्ति दिखाई दे या नहीं?
- 9. , मैं कैसे जांचूं कि कोई तत्व दिखाई दे रहा है या नहीं?
- 10. यह निर्धारित करें कि किसी भी मॉनीटर पर एक खुली WPF विंडो दिखाई दे रही है
- 11. यह जांचने के लिए कि कोई NSWindow दिखाई दे रहा है
- 12. यह जांचने के लिए कि कोई ट्विटर बूटस्ट्रैप पॉपओवर दिखाई दे रहा है या नहीं?
- 13. सी # विनफॉर्म जांच अगर नियंत्रण भौतिक दिखाई दे रहा है
- 14. निर्धारित करें कि कोई उपयोगकर्ता
- 15. निर्धारित करें कि कोई प्रकार स्थिर है
- 16. आईओएस में पॉप्युलेटिंग टेबलव्यू सेल 6
- 17. क्रोम एक्सटेंशन के पॉपअप.html में दिखाई नहीं दे रहा है
- 18. कार्डलेआउट्स: मैं कैसे बता सकता हूं कि कौन सा कार्ड दिखाई दे रहा है?
- 19. यह निर्धारित करें कि कोई प्रविष्टि एफ़टीपी
- 20. नेविगेशन आइटम व्यू कंट्रोलर पर दिखाई नहीं दे रहा है
- 21. मैं कैसे निर्धारित कर सकता हूं कि UISearchDisplayController की खोजResultsTableView दिखाई दे रही है या नहीं?
- 22. स्क्रॉल बार वेबपृष्ठ में दिखाई नहीं दे रहा है
- 23. python वर्ग चर __init__ में दिखाई नहीं दे रहा है?
- 24. रेल के साथ फेविकॉन 3.1 दिखाई नहीं दे रहा है?
- 25. RSpec/Capybara नहीं दिखाई दे रहा है, जहां त्रुटियों
- 26. xcode 4.3.1 - साझा संग्रह विकल्प दिखाई नहीं दे रहा है
- 27. jQuery डीओएम दृश्य स्रोत में दिखाई नहीं दे रहा है
- 28. सी # टूलटिप "शो" पर दिखाई नहीं दे रहा है
- 29. स्क्रॉल UITableView ताकि हेडर दिखाई नहीं दे रहा है
- 30. jquery .डेटा फ़ायरबग में दिखाई नहीं दे रहा है?
धन्यवाद! यह बहुत उपयोगी था, लेकिन यह "indexPathsForVisibleRows" नहीं होना चाहिए "indexPathsForvisibleRows" – mklfarha
इस उत्तर के लिए धन्यवाद। सितार गुम है। "के लिए (इंडेक्स में एनएसआईएनएक्सएक्सपीएटी * इंडेक्स) {" –
@ डेवुनवायर मेरे पास एक फॉलोअप प्रश्न है। क्या होगा यदि मैं जांचना चाहता हूं कि कोई पंक्ति ** पूरी तरह ** दिखाई दे रही है या नहीं। आपका कोड ठीक है सिवाय इसके कि यदि यह पंक्ति केवल आंशिक रूप से दिखाई दे तो यस भी वापस कर दें। धन्यवाद! – pixelfreak