2013-11-07 2 views
-1

У меня есть табличное представление с панелью поиска, индексной таблицей и разделами. В моем табло видны названия аэропортов. Когда я нажимаю на одно из имен, я получаю новое представление с дополнительной информацией об этом человеке. Моя проблема в том, что после каждого раздела indexpath.row начинает пересчитывать. Поэтому, если я перейду в 3-й раздел, и я выбираю первую строку ниже этого раздела, indexpath.row равно 0. Поэтому я всегда получаю больше информации об именах в первом разделе.indexpath.row перезапускается на 0 для каждого раздела

пример:

== Раздел A ==

Амстердам airport1

Амстердам airport2

Амстердам airport3

== Раздел B ==

Брюссель airport1

Брюссель airport2

Если я выбираю «Брюссель airport1» в моем списке, indexpath.row возвращает 0. Таким образом, если я использую это в моем массиве, он будет действовать, как если бы я выбрал «Амстердам airport1», потому что это первый элемент в моем массиве.

У меня есть массив, называемый аэропортами, которые я использую для создания словаря под названием airportDictionary для индекса. Затем, когда элемент выбран, я использую indexpath.row для проверки в моем массиве аэропортов, который я выбрал из аэропорта.

Кто-нибудь знает, как это решить? Если вам нужно больше объяснений или кода, пожалуйста, спросите!

ответ

5

NSIndexPath имеет что-то для этого - section и row можно использовать, чтобы отличить его место.

Амстердам airport1

indexPath.section == 0 
indexPath.row  == 0 

Брюссель airport1

indexPath.section == 1 
indexPath.row  == 0 
+0

Так как я могу использовать этот indexPath.section, чтобы получить правильный массив из моего словаря? Например, есть метод, который возвращает первый массив в моем словаре, если indexpath.section = 1. Или, может быть, есть способ получить заголовок заголовка, чтобы я мог использовать objectforkey: headertitle. – Aelion

+0

Хорошо, думаю, я понял. Я использовал 'NSString * sectiontitle = [(UILabel *) [self.tableView headerViewForSection: section] text]; Аэропорт * a = [alphabetizedAirports objectForKey: sectiontitle] [indexPath.row]; ' – Aelion

+0

@Aelion да именно это, ваш код работает сейчас? –

2

Вам нужно организовать данные правильно. Имейте массив массивов. Внешний массив представляет разделы, и каждый внутренний массив представляет строки этого раздела.

Используйте indexPath.section для доступа к надлежащему внешнему массиву, затем используйте indexPath.row для доступа к правильному значению в массиве секций.

+0

вы можете использовать что-то вроде этого метода groupBy (https://github.com/ollieatkinson/ObjectiveCRuby/blob/master/Ruby/NSArray%2BRuby.m#L25), чтобы отделить элементы, если они вернутся в одном массиве, который возвращает словарь массивов. –

0

То, для чего предназначен раздел. Например, если у вас есть раздел 1 имеет две строки, то путь имеет два значения, то есть 0-0 и 0-1 , а затем, если раздел 2 имеет две строки снова индексный путь имеет два значения снова 1-0 и 1- 1.

Смежные вопросы