मेरे पास कुछ रीति-रिवाज UITableCells युक्त UITable है। उन कोशिकाओं में कुछ UILabels और UITextField होते हैं। तालिका का डेटासोर्स मुख्य नियंत्रक की संपत्ति से आता है। (यह नियंत्रक भी प्रतिनिधि के लिए प्रतिनिधि और डेटा स्रोत है)। अब मैं उपयोगकर्ता UITextFields में से एक को संपादित करता है जब सभी UILabels की सामग्री "मक्खी पर" अद्यतन करने की आवश्यकताकोशिकाओं में से किसी एक के अंदर UITextField को संपादित करते समय फ्लाई पर एक यूआईटीबल को दोबारा लोड करें
,:
यहाँ यूआई का एक सरलीकृत स्क्रीनशॉट है। ऐसा करने के लिए, मैं UITextField स्तर पर "संपादन बदल गया" ईवेंट सुन रहा हूं।
- (IBAction) editChangeHandler: (id) sender {
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[[delegate.viewController.myDataSourceArray objectAtIndex:self.rowIndex] setANumber: [theTextField.text intValue]];
[delegate.viewController reloadRows];
}
ViewController में reloadRows विधि जैसे है:
- (void) reloadRows {
NSLog(@"called reloadRows");
//perform some calculations on the data source objects here...
[theUITable reloadData];
}
यहाँ मेरी समस्या है कि जब भी उपयोगकर्ता फ़ील्ड में मान बदलता है, reloadRows विधि सफलतापूर्वक है यह निम्न कार्रवाई से चलाता है कहा जाता है, तो जाहिर है reloadData लेकिन यह कुंजीपटल को खारिज कर देता है।
तो अंत में, उपयोगकर्ता कुंजीपटल खारिज होने से पहले टेक्स्टफिल्ड को संपादित करते समय केवल एक कुंजी को स्पर्श कर सकता है और तालिका पुनः लोड हो जाती है।
क्या कोई इस के समाधान को जानता है या एक ही समस्या का अनुभव किया है?
Arf! धन्यवाद ! कुंजीपटल बर्खास्तगी वास्तव में सेल राज्य रीसेटिंग द्वारा समझाया गया था। मैं उसे कैसे नहीं देख सकता था?:-) चूंकि मुझे वर्तमान पंक्ति के लेबल को भी अद्यतन करने की आवश्यकता है, इसलिए मैंने आपके दूसरे सुझाव के बाद समाप्त किया और नियंत्रक में एक नई विधि लिखी जो केवल व्यक्तिगत पंक्तियों के लेबल अपडेट करता है। – Saze