2014-10-24 2 views
0

Я хочу получить все ячейки в UITableView, я попробовал [self.tableView visibleCells], но он просто возвращает видимые ячейки. Потому что у меня есть переключатель на моих ячеек таблицы, я хочу, чтобы петля все клетки, чтобы проверить, если он включен или off.This мой код:Как получить все ячейки таблицы в UITableView

NSMutableArray *settings = [[NSMutableArray alloc] init]; 
NSArray *cells = [self.tableView visibleCells]; 
NSMutableArray * saveCodes = [[NSMutableArray alloc] init]; 

for(FilterTableCell *cusCell in cells){ 
    if(cusCell.typeSwitch.isOn == TRUE){ 
     [saveCodes addObject:[NSNumber numberWithInt:cusCell.locationTypeID]]; 
    } 
} 

Спасибо за вашу помощь

+1

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

+1

Я думаю, вам нужен отдельный источник данных массива, чтобы определить, какая строка имеет переключатель включения/выключения, а не ассоциировать это значение с конкретной ячейкой. Класс вашей ячейки или ячейки следует использовать для презентации, не сохраняющей данные (шаблон MVC): D – Zhang

ответ

0

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

Если вы хотите узнать, какие ячейки включены/выключены, вам необходимо сохранить другой массив и использовать его для проверки состояния вашей ячейки.

Кроме того, ваши ячейки не должны иметь собственных состояний, они должны быть известны только вашим контроллером, если вы используете шаблон MVC. Вы можете использовать, например, действие, блок или делегат. Objective-C имеет много способов общения.

0

UITableCell является V шаблоном MVC. Вы должны думать о своих ячейках в терминах модельных объектов, сохраняющих состояние ячейки. Вот почему Apple отделил UITableViewDataSource от остальной части связанного API.

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