2010-05-13 12 views
5

iPhone projemde UITextfields içeren UITableViewCells ile UITableview kullanıyorum. Birçok uygulamada, bir sonraki hücrede bir sonraki hücreye geçmek için bir sonraki düğmeyi kullanmanın mümkün olduğunu gördüm. Bunu başarmanın en iyi yolu nedir?iPhone: Bir sonraki görünümde uitableview'e geçin, nasıl yapılır?

Benim fikrim, düzenleniyor olan metin alanına sahip olan dizinin hücresi dizinini almak ve ardından bir sonraki hücreyi cellForRowAtIndexPath ile elde etmektir. Ama şu anda düzenlemekte olduğum hücrenin indexPath'ını nasıl alabilirim?

Teşekkürler!

cevap

8
  1. Tablo görünümünüzdeki referansları UITextField örneklerini saklayın.
  2. Benzersiz etiket değerlerini UITextField örneklerine atayın. yürümeye, UITextField temsilci yönteminde -textFieldShouldReturn: yılında [finalTextField setReturnKeyType:UIReturnKeyDone];

: Son metin alanına

  • , siz "İleri" için "Bitti" dan klavyenin Return tuşu etiketini değiştirir onun Return tuşu türünü ayarlayabilirsiniz Katılımcıların: UITextField varsayarsak

    - (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

    Teşekkürler! Ancak, birçok textfields olduğundan mevcut metin alanını takip ediyorum. Bir şekilde etiket kullanmadan bir sonraki yazı alanını alabilir miyim? – Mrbiggerm

    +0

    Elbette, bunlara referanslar verin, "UITextField * firstTextField" veya bir dizi kullanın. Ancak etiketler, temsilci metin alanını tanımlamanın en hızlı yoludur. –

    +0

    Ancak tüm metin alanlarını veya etiketleri takip etmek istemiyorsam? Şu anda düzenlediği metin alanının içinde bulunduğu mevcut hücreyi bir şekilde alabilir miyim ve sonra dizin yolunu alabilir miyim? – Mrbiggerm

    0

    gibi UITableViewCell eklendi altına

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

    Sen

    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]; 
    

    Umarım yardımcı olur sonraki satırın UITextField sonra olacağını

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

    yoluyla cari endeks yolunu alabilirsiniz!

    +0

    iOS7'de textField.superView.superView öğesini textField.superView.superView.superView ile değiştirmeniz gerekecektir. – Homam