2012-12-05 24 views
6

में कस्टम सेल की पंक्ति अनुक्रमणिका प्राप्त करें मैं एक आईपैड ऐप विकसित कर रहा हूं। मेरे पास ऐप में यूआईटीबलव्यू है। UITableview प्रोग्राम के रूप में एक लेबल और टेक्स्टव्यू के साथ इसके सबव्यूव के रूप में बनाया गया है। टेबलव्यू में अधिकतम पांच पंक्तियां हो सकती हैं। एक समय में उपयोगकर्ता को 2 पंक्तियां प्रदर्शित की जाती हैं। रनटाइम में, इसे टेक्स्टव्यू & में कुछ टेक्स्ट दर्ज करने की आवश्यकता है, इसे स्थानीय स्क्लाइट डीबी में सहेजें। मैंने कोड में textViewDidBeginEditing और textViewDidEndEditing प्रतिनिधियों को लागू किया है। टेक्स्ट ViewDidEndEditing प्रतिनिधि में, मैं एक एनएसएमयूटेबल सरणी में पाठ (टेक्स्टव्यू में दर्ज) को जोड़ने/बदलने की कोशिश कर रहा हूं। इसके लिए टेक्स्टव्यू का rowindex जिसके लिए मैं पाठ दर्ज करता हूं, आवश्यक है। ताकि मैं सरणी में संबंधित पंक्ति अनुक्रमणिका को जोड़/प्रतिस्थापित कर सकूं।UITableview

कृपया मुझे बताएं कि टेक्स्ट व्यू की पंक्ति अनुक्रमणिका कैसे प्राप्त करें।

उत्तर

20

आपके TextView किसी प्रकार के सेल के भीतर निहित होगा। एक बार जब आपको यह सेल मिल जाए, तो आप इंडेक्स के लिए टेबल से पूछ सकते हैं। सेल खोजने के लिए दृश्य पदानुक्रम को अपने TextView से नेविगेट करें। उदाहरण के लिए:

TextView* textView = // your textView; 
UITableViewCell* cell = (UITableViewCell*)[textView superview]; 
UITableView* table = (UITableView *)[cell superview]; 
NSIndexPath* pathOfTheCell = [table indexPathForCell:cell]; 
NSInteger rowOfTheCell = [pathOfTheCell row]; 
NSLog(@"rowofthecell %d", rowOfTheCell); 
+0

अपने उत्तर के लिए धन्यवाद है। यह कुछ परिदृश्यों में काम कर रहा है और अन्य परिदृश्यों में यह अनुचित पंक्ति अनुक्रमणिका देता है। जैसे कि मैं पंक्ति 0 से पंक्ति 5 तक नेविगेट करता हूं, फिर पंक्ति 4 तक, पंक्ति 0 में, टेक्स्टव्यू में डीडइंडिडेटिंग यह इंडेक्स पथ को दिखाता है। 0 को दिखाता है जबकि इसे 3 दिखाया जाना चाहिए जो मैंने संपादित पंक्ति की अनुक्रमणिका है। – user1531912

4

cellForRowAtIndexPath में यह वास्तव में सरल है। बस को टैग अपने textView

तरह
cell.txtView.tag = indexPath.row; 
TextView प्रतिनिधि विधि में

निम्नलिखित कोड का उपयोग कर पंक्ति खोजें (textViewDidBeginEditing)

int row = textView.tag; 
+3

सावधान रहें यदि आप तालिका से कक्ष जोड़ रहे हैं या हटा रहे हैं इस टैग को सेट करने के बाद देखें - ऑर्डर बदलेगा, गलत मानों वाले टैग छोड़ देगा। – tombeynon

1

चल आईओएस 8.3 मिल गया और एक textViewDidEndEditing
विधि के भीतर इस कार्यान्वित; अच्छा काम करता है!

UIView *parentCell = sender 
while (![parentCell isKindOfClass:[UITableViewCell class]]) { // iOS 7 onwards the table cell hierachy has changed. 
    parentCell = parentCell.superview; 
} 

UIView *parentView = parentCell.superview; 

while (![parentView isKindOfClass:[UITableView class]]) { // iOS 7 onwards the table cell hierachy has changed. 
    parentView = parentView.superview; 
} 


UITableView *tableView = (UITableView *)parentView; 
NSIndexPath *indexPath = [tableView indexPathForCell:(UITableViewCell *)parentCell]; 

NSLog(@"indexPath = %@", indexPath); 
3

स्विफ्ट में पर चल आईओएस 8.4:

@IBAction func signInUpBigButtonPressed(sender: SignInUpMenuTableViewControllerBigButton) { 
    // We set the self.indexCellContainingButtonClicked with the cell number selected. 
    var parentCell: UIView! = sender 
    do { 
     parentCell = parentCell.superview! 
    } while !(parentCell is UITableViewCell) 
    let cell = parentCell as! UITableViewCell 
    self.indexCellContainingButtonClicked = self.tableView.indexPathForCell(cell)!.row 
} 
+0

बिल्कुल वही जो मैं खोज रहा था, धन्यवाद। –

2

यह एक अधिक सुरुचिपूर्ण तरीका पूरा करने के लिए आप क्या पूछा

CGPoint senderPosition = [sender convertPoint:CGPointZero toView:self.tableView]; 

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:senderPosition];