UITableView DidSelectRowAtIndexPath? - PullRequest
       2

UITableView DidSelectRowAtIndexPath?

25 голосов
/ 06 декабря 2011

У меня есть табличное представление с несколькими элементами (весь текст).Когда пользователь нажимает на строку, я хочу, чтобы этот текст в этой ячейке был добавлен в массив.

Как извлечь текст из ячейки?

У меня уже есть:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

}

Есть ли простая строка, которую я могу использовать, чтобы извлечь текст из ячейки, на которую нажимает пользователь?

Ответы [ 5 ]

94 голосов
/ 06 декабря 2011

Использование UITableView cellForRowAtIndexPath:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
}
6 голосов
/ 06 декабря 2011

Это обратное тому, что вы делали в cellForRowAtIndexPath.

 [myArray addObject: [datasource objectAtIndex:indexPath.row]];
4 голосов
/ 06 декабря 2011

В большинстве случаев ответы на подобные вопросы можно найти в документации Apple.Для этого случая посмотрите под UITableView Class Reference , и вы увидите заголовок раздела: Доступ к ячейкам и разделам.Это дает вам следующий метод:

– cellForRowAtIndexPath:

Теперь используйте это для доступа к ячейке, а затем используйте для получения текста из ячейки (если вы не знаете, как, посмотрите под UITableViewCell Ссылка класса.

В целом ваш метод может выглядеть примерно так:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
    [myArray addObject:cellText];
}
3 голосов
/ 06 декабря 2011

Моим первым предположением будет получение индекса, [indexPath row]; затем выборку данных из вашего источника данных (массива или данных ядра), а не непосредственно из самой таблицы.

2 голосов
/ 02 сентября 2015

Swift Версия:

let cell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
let cellText: String = cell.textLabel.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...