2015-07-09 2 views
0

У меня есть UITextField в customCell. Я хочу, чтобы получить текст, который пользователь вводит в него. В моем файле customCell.m я могу получить текст, который сполучить indexPath для customCell в TableView

занесены
[self.aTextField addTarget:self action:@selector(aTextFieldEditing:) forControlEvents:UIControlEventEditingChanged]; 

, но я не могу получить indexPath так что я могу сохранить его в NSMutableArray, который держит все UITextField с.

В моем TableView я не могу запустить didSelectRowAtIndexPath. Я также не могу получить метод textFieldDidBeginEditing для вывода чего-либо. Если это помогает, у меня есть TableView с разделами.

Моя идея в данный момент, чтобы получить indexpath.row и indexpath.section от tableView и сохранить их как экстерном, так что я могу получить доступ к нему в customCell.m

Я был бы признателен за любые идеи или конкретные примеры как я мог это сделать. Или другой более чистый способ выполнить то, что я хочу.

ответ

1

Вы должны иметь возможность получить индексный путь, используя метод -indexPathForRowAtPoint: на UITableView.

Вы можете сделать что-то вроде этого (не проверено):

- (void)aTextFieldEditing:(UITextField *)textField { 
    CGPoint convertedPoint = [textField.superview convertPoint:textField.center toView:self.tableView]; 
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:convertedPoint]; 
    // Use your index path... 
} 

Edit:

В случае, если ваша клетка получающего редактировать события, вы всегда можете определить протокол и сделать ваш контроллер представления делегат ячейки. Затем вы можете вызвать этот метод делегата из своего метода aTextFieldEditing и передать ячейку. Теперь, когда у вас есть ячейка, вы можете позвонить по номеру -indexPathForCell. Если это не имеет смысла, посмотрите на шаблон делегата. Это очень распространено в Cocoa/Cocoa Touch и очень хорошо документировано онлайн.

+0

Я пробовал то, что вы сказали, но у меня нет таблицыView. Я думаю, что это потому, что 'aTextFieldEditing:' находится в файле customCell.m. Я попытался использовать UITableView * tableV = (UITableView *) [textField superview]; а затем подключить его, но моя программа разбилась. – njyulan

+0

@njyulan Обновлен мой ответ! – Lance

+0

Спасибо за обновление. Я проверю документацию по протоколам и делегатам. Затем я надеюсь, что смогу отчитываться и отметить ваш ответ как правильный ответ. :) – njyulan

Смежные вопросы