2012-02-01 27 views
7

में टेक्स्ट को संपादित करने की अनुमति दें, मैं अपने टेबलव्यू एप्लिकेशन में "पसंदीदा पृष्ठ" मेनू बना रहा हूं, जहां उपयोगकर्ता अपने पसंदीदा वेब पेज सहेज सकते हैं और फिर मेनू के माध्यम से उन्हें आसानी से नेविगेट कर सकते हैं।उपयोगकर्ता को UITableView सेल

याद रखने के लिए कि कौन सा लिंक है, मैं उपयोगकर्ता को "संपादन" कहने वाले बटन पर क्लिक करने की अनुमति देना चाहता हूं, किसी भी तरह से उस सेल का चयन करें जिसे वे नाम संपादित करना चाहते हैं, और उसके बाद नया नाम टाइप करें और क्या उपयोगकर्ता ने अपना नाम बदलकर उपयोगकर्ता का नाम बदल दिया है। मैं वर्तमान में लिंक डेटा को सहेजने के लिए अंतर्निहित सेटिंग्स एप्लिकेशन का उपयोग कर रहा हूं।

मुझे अभी जो भी पूछा गया है उसके हर पहलू को जानने की आवश्यकता नहीं है। मैं सिर्फ यह जानना चाहता हूं कि उपयोगकर्ता के लिए टेबलव्यू के सेल टेक्स्ट को संपादित करना संभव है, और ऐसा करने के लिए मैं किन तरीकों का उपयोग करूंगा।

मैंने अन्य प्रश्नों को देखा है जो समान जमीन को कवर करते हैं, लेकिन आम तौर पर अधिक प्रोग्रामेटिक आधार से।

+0

(http://stackoverflow.com/questions/7064525/editable-uitableview-with-a-textfield- [प्रत्येक कोशिका पर किसी पाठ फ़ील्ड के साथ संपादन योग्य UITableView] के संभावित डुप्लिकेट ऑन-सेल-सेल) –

+0

@ जिम धन्यवाद लेकिन वह पोस्ट हमेशा एम्बेडेड टेक्स्टफील्ड को हमेशा खुलासा करता है। – DGund

उत्तर

7

उपयोगकर्ता सीधे तालिकादृश्य के सेल टेक्स्ट को संपादित नहीं कर सकता है। (तकनीकी रूप से, यह cell.textLabel.text होगा)। हालांकि, अगर वे "संपादन" मोड में जाते हैं, तो आप आसानी से सेल (या एक मोडल व्यू में) में UITextField प्रदर्शित कर सकते हैं जो वर्तमान मान के साथ पूर्वनिर्धारित है, उन्हें इसे संपादित करने, सहेजने और फिर सेल.टेक्स्ट लेबल अपडेट करने दें। टेक्स्ट खुद को महत्व दें।

+0

तार्किक कामकाज की तरह लगता है। – DGund

-1

तो, मुझे लगता है कि सबसे अच्छा तरीका tabelview सेल एडिटस्टाइल का उपयोग करना है। आप टेबलव्यू प्रतिनिधि सेट सेल एडिटस्टाइल का उपयोग कर सकते हैं। जब आप सेल संपादित करते हैं तो आप कुछ ऐसा कर सकते हैं जो आप चाहते हैं। सेट सेल शैली में: के लिए

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
+0

यह वही प्रकार का "संपादन" नहीं है - इस प्रकार का संपादन सेल को स्थानांतरित करने या इसे हटाने के लिए संदर्भित करता है। – Rayfleck

+0

-1 @Rayfleck ने क्या कहा। इस उत्तर को हटाने का सही जवाब हो सकता है, या आप टिप्पणियों का जवाब दे सकते हैं। –

6

आपका UITableView कोशिकाओं यहां बनाई गई हैं, आम तौर पर

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

(प्रतिनिधियों में से एक:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 

जब उपयोगकर्ता क्लिक संपादित करें बटन में काम करें UITableView)।

तो अगर आप UITableViewCell उपवर्ग और एक text संपत्ति का पर्दाफाश, आप आप सेल में एक UITextField उदाहरण पकड़े सहित क्या चाहते हैं, कर सकते हैं। सामान्य रूप से डेक्यू सामान का उपयोग करना सुनिश्चित करें।

फिर, यदि उपयोगकर्ता को छू लेती है जब UITableViewCell आप UITextField फोकस दे सकते हैं: आप UITableViewCell उपवर्ग एक UITextFieldDelegate बनाने के लिए और यह पाठ क्षेत्र के लिए प्रतिनिधि करते हैं

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self.thatTextFieldIMentioned becomeFirstResponder]; 
} 

, आप आसानी से इन संभाल कर सकते हैं annoyingly मुश्किल से याद तरीके:

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    NSLog(@"yeah inform someone of my change %@", textField.text); 
} 

- (BOOL)textFieldShouldClear:(UITextField *)textField { 
    return YES; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
} 
संबंधित मुद्दे