2012-10-12 12 views
6

के रूप में हमेशा 0 देता है मेरे पास कस्टम कक्षों के साथ एक UITableView है। यह कस्टम सेल "सामान्य बाएं" शैली के साथ एक सामान्य सेल की तरह दिखता है। लेकिन उपयोगकर्ता को पाठ को संपादित करने की अनुमति देने के लिए, मेरे कस्टम सेल में एक विस्तार लेबल और एक टेक्स्ट फ़ील्ड है। मेरे पास एक सेव बटन है जहां मैं उपयोगकर्ता द्वारा दर्ज किए गए सभी डेटा को सहेजना चाहता हूं। मैंने इस ट्यूटोरियल का उपयोग कर कस्टम सेल बनाया: http://agilewarrior.wordpress.com/2012/05/19/how-to-add-a-custom-uitableviewcell-to-a-xib-file-objective-c/#comment-4883UITableView की अनुक्रमणिकाPathForCell: indexPath.row

उपयोगकर्ता डेटा प्राप्त करने के लिए मैंने टेबल फ़ील्ड के प्रतिनिधि को टेबल व्यू कंट्रोलर (स्वयं) पर सेट किया और टेक्स्ट फ़ील्डडिड एंडडिटिंग: विधि लागू की। इस विधि में मैं टेक्स्ट फ़ील्ड के मूल दृश्य (= सेल) के लिए पूछता हूं और इस सेल के इंडेक्सपाथ के लिए पूछता हूं। समस्या यह है कि, मैं हमेशा indexPath.row के लिए 0 प्राप्त करता हूं, इससे कोई फर्क नहीं पड़ता कि मैं कौन सा सेल संपादित करता हूं। मैं क्या गलत कर रहा हूं?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:[CustomCell reuseIdentifier] forIndexPath:indexPath]; 
if (cell == nil) { 
    [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
    cell = self.customCell; 
    self.customCell = nil; 
} 

cell.label.text = @"Some label text"; 
cell.editField.delegate = self; 
cell.accessoryType = UITableViewCellAccessoryNone; 

return cell; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
CustomCell *cell = (CustomCell *) textField.superview; 

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 

NSLog(@"the section is %d and row is %d", indexPath.section, indexPath.row); 
... 
} 

संपादित करें:

यहाँ मेरी कोड है मैं सिर्फ पता चला, कि लौट आए indexPath नहीं के बराबर है। तो अगर यह शून्य है तो मुझे मानक मान 0 मिलते हैं, ठीक है। लेकिन अब: इंडेक्सपैथ के लिए मुझे शून्य क्यों मिलती है?

+0

यह एक समान धागा है जिसका कारण यह है कि http://stackoverflow.com/questions/6930026/tableviewindexpathforcell-returns-nil –

उत्तर

6

मैं सिर्फ समाधान अपने आप को पाया पॉप्युलेट किया जा सका। मुझे स्टैक ओवरफ्लो में पर्यवेक्षण के लिए कोड मिला, इसलिए मैंने इसे कॉपी किया। लेकिन यह काम नहीं करता है। आपको इस तरह के दो पर्यवेक्षकों की आवश्यकता है:

CustomCell *cell = (CustomCell *) textField.superview.superview; 

अब यह ठीक काम करता है!

0

आप बस अपने CustomCell के लिए एक index संपत्ति जोड़ सकते हैं और साथ indexPath.row अंदर (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

+0

अच्छा विचार है, मैंने ऐसा किया लेकिन मुझे यह त्रुटि मिली कि "अज्ञात चयनकर्ता उदाहरण के लिए भेजा गया है। .. [UITableViewCellContentView indexPath] "(मैंने प्रॉपर्टी इंडेक्सपैथ कहा है)। तो, मैं थोड़ा उलझन में हूं कि क्यों सेल अब UITableViewCellContentView है और मेरा कस्टमसेल नहीं है। – tester