के साथ UITableView में "कोई पंक्ति नहीं मिली" संदेश प्रदर्शित करना मैंने एक आईफोन ऐप लागू किया है जो UITableViewController/UITableView और कोर डेटा का उपयोग करता है। इसके अलावा, मैं तालिका डेटा का प्रबंधन करने के लिए एक NSFetchedResultsController का उपयोग करता हूं। यह सब बहुत सीधे आगे था और महान काम करता है। मैंने तब फैसला किया कि मुझे UITableView में एक संदेश प्रदर्शित करना चाहिए जब कोई पंक्तियां नहीं मिली/पुनर्प्राप्त की गईं। इस पर शोध करने के बाद, ऐसा प्रतीत होता है कि ऐसा करने का सबसे अच्छा तरीका (शायद एकमात्र तरीका) एक "डमी" सेल वापस करना था जिसमें संदेश शामिल था। हालांकि, जब मैं ऐसा करता हूं, तो मुझे रनटाइम सिस्टम से एक गंदाग्राम मिलता है जो डेटा असंगतताओं के बारे में शिकायत करता है (और सही तरीके से): "अमान्य अद्यतन: खंडों की अवैध संख्या। तालिका दृश्य में निहित अनुभागों की संख्या ..."। यहाँ प्रासंगिक कोड है: इसी तरह के सवाल सेकोर डेटा
- (NSInteger) numberOfSectionsInTableView: (UITableView *)tableView
{
if ([[self.fetchedResultsController fetchedObjects] count] == 0) return 1;
return [[self.fetchedResultsController sections] count];
}
- (NSInteger) tableView: (UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([[self.fetchedResultsController fetchedObjects] count] == 0) return 1;
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex: section];
return [sectionInfo numberOfObjects];
}
- (UITableViewCell *) tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
if ([[self.fetchedResultsController fetchedObjects] count] == 0) {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.textLabel.text = @"No widgets found.";
return cell;
}
STCellView *cell = (STCellView *)[tableView dequeueReusableCellWithIdentifier: @"ShieldCell"];
[self configureCell: cell atIndexPath: indexPath];
return cell;
}
मैंने पढ़ लिया है प्रतिक्रियाएं और ऐसा लगता है कि मैं
insertRowsAtIndexPaths: withRowAnimation:
का उपयोग करना चाहिए मेरी तालिका में "डमी" संदेश पंक्ति सम्मिलित करने के लिए। हालांकि, इसका मतलब यह भी है कि वास्तविक पंक्ति डालने पर "डमी" पंक्ति को हटा दिया जाता है। मैं यह कर सकता हूं, लेकिन ऐसा लगता है कि इसे पूरा करने का एक आसान तरीका होना चाहिए। मैं बस इतना करना चाहता हूं, एक संदेश प्रदर्शित करना है जो इंगित करता है कि तालिका में कोई पंक्ति नहीं है (पर्याप्त सरल?)। तो, मेरा सवाल यह है: क्या "डमी" सेल दृष्टिकोण का उपयोग किए बिना UITableView में एक संदेश प्रदर्शित करने का कोई तरीका है या UITableViewController/NSFetchResulsController को मनाने के लिए कोई तरीका है कि यह केवल "डमी" पंक्ति है और उन्हें नहीं मिलना चाहिए इस बारे में परेशान है क्योंकि यह तालिका में एक वास्तविक पंक्ति (मेरे दृष्टिकोण से) नहीं है?
कोई भी सहायता जो आप प्रदान कर सकते हैं उसकी बहुत सराहना की जाएगी (मैं आईफोन विकास के लिए एक संघर्षशील नौसिखिया हूं और मैं सर्वोत्तम प्रथाओं को सीखना चाहता हूं)। धन्यवाद।
इच्छित यूआई प्राप्त करने के लिए टेबलव्यू डेटासोर्स के साथ हैक करने की बजाय क्यों "टेबल नहीं मिला" संदेश को तालिकादृश्य शीर्षलेख में जोड़ने के बजाय क्यों नहीं? – Rog
@Rog उपयोगी टिप। +1 –
यदि आपके टेबल व्यू में केवल एक अनुभाग है तो यह सबसे अच्छा तरीका है। एकाधिक अनुभाग – Brett