UITableView с пользовательским UITableViewCell - PullRequest
1 голос
/ 16 марта 2011

У меня есть TableView У меня есть UITableViewCell. В UItableViewController у меня есть UITextField. В приложении, когда я нажимаю в TextField. Открыто. Но методы - tableView: willSelectRowAtIndexPath: - tableView: didSelectRowAtIndexPath: не работает, потому что мы не нажимаем непосредственно на строку. Как я могу узнать indexPath.row текущей строки?

Ответы [ 3 ]

0 голосов
/ 16 марта 2011

Вы можете:

  1. Подкласс UITextField и присвоить ему свойство indexPath.В cellForRowAtIndexPath, когда textField создается и добавляется в ячейку, назначьте свойство.Затем в методах делегата textField у вас будет доступ к правильному indexPath.Этот метод также позволяет вам связать другую информацию с вашим textField, которая вам может понадобиться.

  2. Используйте методы действий UIControl:

    - (void)textFieldDidChangeValue:(id)sender withControlEvents:(UIEvent *)event {
        NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:
            [[[event touchesForView:sender] anyObject] locationInView:self.tableView]];
    
        //Do whatever you need to, now that you have the indexPath
    }
    

    Этот метод позволяет избежать необходимости создавать подклассы.

0 голосов
/ 16 марта 2011

Примерно так должно работать, если у вас есть ссылка на ваш tableView и textField. Ячейка тоже должна быть видна:

UITableViewCell* tvc = (UITableViewCell*)[textField superview];
while ( tvc != nil && ![tvc isKindOfClass: [UITableViewCell class]] )
    tvc = [tvc superview];

NSIndexPath* ip = [tableView indexPathForCell: tvc];
0 голосов
/ 16 марта 2011

В методе cellForRowAtIndexPath присвойте текущую строку своему UITextField, установив в свойстве тега значение indexPath.row

[yourTextfield setTag:indexPath.row];

Когда текстовое поле закончило редактирование, вы можете прочитать его свойство тега, и все готово.

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