2013-07-05 3 views
1

Я пытаюсь создать счетчик индексов для каждой ячейки в сгруппированном UITableView, чтобы я мог хранить значения ячеек в правильных положениях в массиве, но я не могу найти нужную ему математику:Подсчитать общий индекс ячейки для сгруппированных UITableView?

Индекс работает следующим образом, и мой счетчик должен быть:

indexPath.section = 0 
    indexPath.row = 0  cellIndex = 0 
    indexPath.row = 1  cellIndex = 1 
    indexPath.row = 2  cellIndex = 2 
    indexPath.row = 3  cellIndex = 3 
    indexPath.row = 4  cellIndex = 4 

indexPath.section = 1 
    indexPath.row = 0  cellIndex = 5 
    indexPath.row = 1  cellIndex = 6 
    indexPath.row = 2  cellIndex = 7 
    indexPath.row = 3  cellIndex = 8 

Это мое уравнение до сих пор, но это не работает правильно:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger cellIndex = numberOfSections * indexPath.section + indexPath.row; 
} 
+0

Трудно сказать, что ваша цель сделать это, но я подозреваю, что вы пытаетесь сделать, это не путь. Почему, по-вашему, вам нужен этот расчетный cellIndex? – rdelmar

+0

У меня есть uitextfield внутри каждой из ячеек, и я сохраняю их значение в массиве, поскольку они редактируются, поэтому они остаются в виде прокрутки uitableview. – DiscoJunk

ответ

1

я понял, простой способ для достижения этой цели:

//Number of cells before this 
int cellsBefore = 0; 
for(int i = indexPath.section - 1; i >= 0; i--) { 
    cellsBefore += [tableView numberOfRowsInSection:i]; 
} 
//Calculate cellIndex count 
NSInteger cellIndex = cellsBefore + indexPath.row; 
0

Я думаю, вы должны изменить numberOfSections * indexPath.section к numberOfCellsPerSection * indexPath.section. Согласно вашему комментарию ответа, вы можете сохранить значение uitextfield в соответствующем объекте ячейки вместо использования массива.

+0

Спасибо. Да, это определенно количество ячеек в каждом разделе, которое нужно вычислить, однако оно становится более сложным, потому что каждый раздел имеет различное количество ячеек, поэтому мне придется найти это значение. Я не могу сохранить значение uitextfield с помощью ячейки, потому что ячейки уничтожаются и воссоздаются по мере прокрутки – DiscoJunk

+0

У вас есть объект данных для каждой ячейки? Если да, просто используйте объект данных для хранения, иначе используйте 'NSDictionary' для его хранения. Ключом словаря может быть «@» sectionIndex, cellIndex «', а значение - значение текстового поля. – Andrew

0

Вы можете использовать TLIndexPathTools. Класс TLIndexPathDataModel может автоматически упорядочивать элементы по разделам, и для упрощения кода контроллера просмотра существует множество удобных API-интерфейсов. Например, вы получили бы общее количество таких элементов:

self.indexPathController.items.count; 

Существует несколько примеров проектов, демонстрирующих различные варианты использования. JSON sample project демонстрирует организацию данных JSON в секциях с использованием свойства sectionNameKeyPath, похожего на то, как работает NSFetchedResultsController (за исключением того, что элементы не должны быть предварительно отсортированы по разделу с TLIndexPathTools). Также можно явно создавать разделы, включая пустые, путем создания экземпляров TLIndexPathSectionInfo. См. Section Info sample project.

+0

Спасибо Timothy - я посмотрю на это – DiscoJunk

+0

Я добавил общий заголовок счетчика строк в пример «Информация о разделе». –

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