2010-05-13 59 views
5

在我的iPhone項目中,我正在使用包含UITextfields的UITableViewCells的UITableview。我曾在許多應用程序中看到可以使用下一個按鈕跳轉到下一個單元格中的下一個文本字段。什麼是完成這個最好的方法?iPhone:跳轉到uitableview中的下一個uitextfield,如何?

我的想法是獲取正在編輯的文本字段的單元格的indexPath,然後通過cellForRowAtIndexPath獲取下一個單元格。但是我怎麼能得到我目前正在編輯的單元格的indexPath?

謝謝!

回答

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 2010-05-13 09:14:18

+0

當然,只要保留對它們的引用,「UITextField * firstTextField」或使用數組等等。但標記可能是識別委託文本字段的最快方法。 – 2010-05-13 09:19:13

+0

但是,如果我不想跟蹤所有文本框或標籤?我能否以某種方式獲取當前正在編輯的文本字段所在的當前單元格,然後獲取indexpath? – Mrbiggerm 2010-05-13 10:13:15

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

在iOS7中,您需要將textField.superView.superView替換爲textField.superView.superView.superView – Homam 2014-03-31 06:31:11

相關問題