2013-05-16 2 views
1

У меня есть статический UITableView с несколькими разделами. Один из них содержит множество ячеек, которые будут параметрами (нажмите на галочку).Цикл через статические ячейки в одном разделе. UITableView

У меня есть NSMutableArray (self.checkedData), который содержит идентификаторы строк из выбранных строк. Я не могу понять, как перемещаться по ячейкам в определенном разделе. Чтобы проверить, находится ли строка в массиве, добавьте галочку. Поэтому, когда представление загружено, параметры можно вытащить из coredata, а затем отмеченные отмеченные строки.

В настоящее время у меня есть это для обработки добавления галочек. Это прекрасно работает.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // determine the selected data from the IndexPath.row 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    // determine the data from the IndexPath.row 

    if (![self.checkedData containsObject:[NSNumber numberWithInt:indexPath.row]]) 
    { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     [self.checkedData addObject:[NSNumber numberWithInt:indexPath.row]]; 
    } else { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     [self.checkedData removeObject:[NSNumber numberWithInt:indexPath.row]]; 
    }  

    [tableView reloadData]; 
} 

ответ

3

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

NSUInteger section = 0; 
NSInteger numberOfRowsInSection = [self.tableView numberOfRowsInSection:section]; 

NSMutableArray *cellsInSection = [NSMutableArray arrayWithCapacity:numberOfRowsInSection]; 

for (NSInteger row = 0; row < numberOfRowsInSection; row++) 
{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section]; 

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

    [cellsInSection addObject:cell]; 
} 

cellsInSection массив теперь содержит все ячейки в разделе 0

+0

Спасибо. Я не был уверен, как это сделать, но это имело смысл. –

+1

ячейка может быть нулевой здесь, на ios7, если она невидима на данный момент. –

+2

Да, может. Если вам действительно нужно получить доступ к настроенным экземплярам ячеек, вы можете сделать это, используя метод '[tableViewDataSource tableView: tableView cellForRow ...]' вместо ['tableView cellForRow ...]' в источнике данных таблицы, который всегда должен давать вы не-нильская ячейка по цене (возможно, бесполезной) инициализации/удаления/настройки ячеек –

1

Может быть что-то вроде этого в viewDidLoad:

for(NSIndexPath *thisIndexPath in [self.tableView indexPathsForVisibleRows]) { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    if (![self.checkedData containsObject:[NSNumber numberWithInt:indexPath.row]]) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     [self.checkedData addObject:[NSNumber numberWithInt:indexPath.row]]; 
    } else { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     [self.checkedData removeObject:[NSNumber numberWithInt:indexPath.row]]; 
    } 
    [self.tableView reloadData]; 
} 
+0

Цените, что вам нужна помощь. Почувствовав, что другой был больше похож на то, что я хотел, но я тоже понял ваш ответ. Благодарю. –

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