UISearch переставить indexpath.row - PullRequest
0 голосов
/ 04 мая 2010

У меня есть UiSearchBar, реализованный в моем TableView, и у меня также есть два NSArray, один для заголовка и один для описания. Когда я просматриваю массив названий, он возвращает правильный поиск, но когда я щелкаю по строке, с которой пришел поиск, я получаю «строку 0», если щелкаю по первой строке. Мой вопрос заключается в том, как установить связь между двумя массивами, чтобы при поиске реорганизовывать заголовки на основе пользовательского поиска массив описания соответствует той же строке, в которой находится заголовок.

Ответы [ 3 ]

0 голосов
/ 05 мая 2010

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

0 голосов
/ 19 апреля 2011

Однажды у меня была эта проблема. Так что для быстрого решения я сделал это: В шапке: BOOL usingFilterArray;

Если вы переключаетесь между полным и отфильтрованным словарем, просто установите вышеупомянутый BOOL на NO и YES соответственно.

затем в didSelectRowAtIndexPath используйте оператор "if", чтобы проверить состояние объекта usingFilterArray. Отдых должен быть довольно легким. (Дайте мне знать, если вам все еще нужна помощь) Просто одна вещь, когда вы выполняете поиск после того, как фильтр словаря гидратируется, если вы отмените поиск, вам необходимо убедиться, что он запущен, иначе ваше приложение будет аварийно завершать работу, поскольку в гидратированном словаре не будет никакого объекта. (Я предполагал, что вы очистили отфильтрованный словарь)

- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
        [self.tableView reloadData];
 } 

Mate, это просто быстрое решение.

0 голосов
/ 04 мая 2010

Просто не используйте два NSArray с, а только один с пользовательскими NSObject объектами:

@interface SomeObject : NSObject {
    NSString *_title;
    NSString *_description;
}

- (BOOL)matchesKeywords:(NSString *)keywords;

@end

Тогда вся ваша информация хранится в одном классе, как и должно быть в Obj-C. Вы можете легко выполнить поиск, потому что сам объект как бы знает , соответствует ли он указанному ключевому слову, поэтому, когда вы захотите изменить SomeObject, вы можете легко управлять этими изменениями в самом классе.

...