iPhone: перейти к следующему uitextfield в uitableview, как? - PullRequest
5 голосов
/ 13 мая 2010

В моем проекте iPhone я использую UITableview с UITableViewCells, содержащими поля UIText. Я видел во многих приложениях, что можно использовать следующую кнопку для перехода к следующему текстовому полю в следующей ячейке. Каков наилучший способ сделать это?

Моя идея - получить indexPath ячейки с редактируемым текстовым полем, а затем получить следующую ячейку с помощью cellForRowAtIndexPath. Но как я могу получить indexPath ячейки, которую я сейчас редактирую?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 13 мая 2010
  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 голосов
/ 18 марта 2013

Предполагая, что 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];

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...