Использование indexPath в таблице для ссылки на массив - PullRequest
0 голосов
/ 29 августа 2011

У меня есть большой массив данных, которые я отображаю в UITable.Таблица разбита на разделы по алфавиту.Когда пользователь выбирает ячейку, мне нужно выяснить, где в массиве находится этот элемент.Единственные идентифицирующие данные в ячейке - это метка, которая, похоже, не помогает.Данные в массиве также не обязательно упорядочены по алфавиту.Как я могу выяснить, какой элемент в массиве они выбрали.Могу ли я привязать метаданные или что-то к ячейке таблицы?Я подумал сделать какие-то вычисления на основе indexPath и общего количества в массиве, но так как массив не алфавитный, а таблица, это не сработает.

Надеюсь, это имеет смысл.Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Обычно проблема решается сама собой.Когда вы создаете источник данных для просмотра таблицы, вы должны сортировать массив таким образом, чтобы иметь возможность последовательно отображать информацию, это также приведет к тому, что вы сможете получить к ней доступ последовательно.

Другими словами, вы получаете доступ к чему-то, чтобы построить таблицу для вызовов источника данных -tableView: cellforrowatindexpath :, алгоритм, который вы используете для построения ячейки, будет таким же, как и для доступа к выбранной ячейке.используя путь индекса с didSelectCellAtIndexPath:.

0 голосов
/ 29 августа 2011

Вы должны взглянуть на метод UITableView Delegate ниже:

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

Это даст путь к индексу выбранной ячейки. Когда у вас есть путь индекса, вы можете получить доступ к свойству строки и раздела следующим образом:

indexPath.row;
indexPath.section;

Получив эти два значения, вы можете получить доступ к объекту массива и посмотреть, какой элемент был выбран в каждом разделе:

NSLog(@"Section %i, Row %i, Item %@", indexPath.section, indexPath.row, [array objectAtIndex:indexPath.row]);
...