Запись строки в tableView: didSelectRowAtIndexPath: - PullRequest
0 голосов
/ 06 марта 2012

В попытке лучше понять таблицы для будущего использования, я надеялся, что кто-нибудь может дать мне простой синтаксис использования этого метода.Я надеюсь получить некоторое понимание и развить его в будущем.

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

}

Итак, я настроил это.Скажем, я хотел NSLog содержимое выбранной строки.Как мне поступить так?

Пока что я пробовал несколько раз, но он либо возвращает nil, либо я получаю ошибку.

РЕДАКТИРОВАТЬ: нашел это сам.Решение:

NSLog(@"Row: %@", [dataArray objectAtIndex:indexPath.row]);

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

У indexPath есть категория для работы с таблицами.Он отвечает на -row и -section.

NSLog(@"Row: %d , Section %d",[indexPath row], [indexPath section]);
0 голосов
/ 06 марта 2012

Невозможно ответить на этот вопрос без вашего реального кода, но в широком смысле:

Это метод в протоколе UITableViewDelegate .Делегат табличного представления - это объект, который табличное представление по существу запрашивает у своего «мнения» о том, что делать, когда происходят определенные события, например, здесь, когда пользователь нажимает на строку, чтобы выбрать ее.

Часто,делегат и источник данных табличного представления - это один и тот же объект.Источник данных, как следует из его названия, предоставляет данные, которые отображаются в табличном представлении.Это делается с помощью методов, которые очень похожи на методы делегата табличного представления;табличное представление запрашивает источник данных для необходимой информации, а не источник данных, инициирующий обмен.

Итак, где-то этот объект делегата / источника данных (теперь мы подходим кчасть, в которой было бы очень полезно иметь собственный код для обсуждения), имеет ссылку на модель , которая представляет всю информацию, которая будет отображаться в таблице.Это может быть просто как массив, или это может быть соединение с какой-либо полноценной базой данных.В любом случае табличное представление просит источник данных предоставить информацию для каждой строки из этой модели - это происходит в tableView:cellForRowAtIndexPath:.

Этот метод здесь, tableView:didSelectRowAtIndexPath:, можеттакже получить доступ к модели, поэтому все, что вам нужно сделать для проверки содержимого строки, выполнить тот же поиск, что и в tableView:cellForRowAtIndexPath:.

В качестве конкретного примера:

NSLog(@"%@", [modelArray objectAtIndex:[indexPath row]]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...