2010-05-13 20 views
5

मेरे आईफोन प्रोजेक्ट में मैं UITableViewCells के साथ UITextfields युक्त UITableview का उपयोग कर रहा हूं। मैंने कई ऐप्स में देखा है कि अगले सेल में अगले टेक्स्टफील्ड पर जाने के लिए अगले बटन का उपयोग करना संभव है। इसे निष्पादित करने का श्रेष्ठ तरीका क्या है?आईफोन: uitableview में अगले uitextfield पर जाएं, कैसे करें?

मेरा विचार सेल के इंडेक्सपैथ को टेक्स्टफील्ड के साथ प्राप्त करना है जिसे संपादित किया जा रहा है और फिर सेलफोररएट इंडेक्सपैथ द्वारा अगला सेल प्राप्त करें। लेकिन मैं उस सेल का इंडेक्सपैथ कैसे प्राप्त कर सकता हूं जिसे मैं वर्तमान में संपादित कर रहा हूं?

धन्यवाद!

उत्तर

8
  1. अपने तालिका दृश्य में UITextField उदाहरणों के संदर्भ रखें।
  2. अद्वितीय टैग मानों को अपने UITextField उदाहरणों पर असाइन करें।
  3. अपने अंतिम पाठ फ़ील्ड में, आप अपनी वापसी कुंजी प्रकार है, जो "अगला" को "पूर्ण" से कीबोर्ड की वापसी कुंजी लेबल बदल जाता है सेट कर सकते हैं: [finalTextField setReturnKeyType:UIReturnKeyDone];

UITextField प्रतिनिधि विधि -textFieldShouldReturn: में, के माध्यम से चलना प्रतिसाददाताओं:

- (BOOL) textFieldShouldReturn:(UITextField *)tf { 
    switch (tf.tag) { 
     case firstTextFieldTag: 
      [secondTextField becomeFirstResponder]; 
      break; 
     case secondTextFieldTag: 
      [thirdTextField becomeFirstResponder]; 
      break; 
     // etc. 
     default: 
      [tf resignFirstResponder]; 
      break; 
    } 
    return YES; 
} 
+0

धन्यवाद! लेकिन मैं सिर्फ मौजूदा टेक्स्टफील्ड का ट्रैक रख रहा हूं क्योंकि कई टेक्स्टफील्ड हैं। क्या मैं कुछ तरीकों से टैग का उपयोग किए बिना अगला टेक्स्टफील्ड प्राप्त कर सकता हूं? – Mrbiggerm

+0

निश्चित रूप से, केवल उन संदर्भों को रखें, 'UITextField * firstTextField', या एक सरणी आदि का उपयोग करें, लेकिन टैग शायद प्रतिनिधि के टेक्स्ट फ़ील्ड की पहचान करने का सबसे तेज़ तरीका है। –

+0

लेकिन अगर मैं सभी टेक्स्टफील्ड या टैग का ट्रैक रखना नहीं चाहता हूं? क्या मैं किसी मौजूदा तरीके से वर्तमान सेल प्राप्त कर सकता हूं जो वर्तमान में टेक्स्टफील्ड संपादित कर रहा है और फिर इंडेक्सपाथ प्राप्त कर सकता है? – Mrbiggerm

0

UITextField मानते हुए की तरह UITableViewCell में जोड़ा गया था नीचे

UITableViewCell *cell; 
UITextField *textField; 
... 
textField.tag = kTAG_TEXTFIELD; 
[cell.contentView addSubview:textField]; 
... 

आप

-(BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if([textField.superView.superView isKindOfClass:[UITableViewCell class]]) { 
    UITableViewCell *cell = (UITableViewCell *)textField.superView.superView; 
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:cell]; 
    } 
    ... 

के माध्यम से वर्तमान सूचकांक पथ प्राप्त कर सकते हैं अगली पंक्ति के UITextField तो होगा

NSIndexPath *indexPathNextRow = [NSIndexPath indexPathForRow:(indexPath.row+1) inSection:indexPath.section]; 
UITableViewCell *cellNextRow = (UITableViewCell *)[self.myTableView cellForRowAtIndexPath:indexPathNextRow]; 
UITextField *textFieldNextRow = (UITextField *)[cellNextRow.contentView viewWithTag:kTAG_TEXTFIELD]; 

आशा है कि यह मदद करता है!

+0

आईओएस 7 में आपको textField.superView.superView.superView के साथ textField.superView.superView को प्रतिस्थापित करने की आवश्यकता होगी। – Homam

संबंधित मुद्दे