Редактировать невидимые строки для UITableViewCells - PullRequest
0 голосов
/ 28 марта 2012

Я работаю над приложением, в котором я хочу включить / выключить состояние некоторых устройств, изменив вид изображения ячейки.У меня есть устройства в табличном представлении, и я устанавливаю режим редактирования табличного представления одним нажатием кнопки, и редактирование выполняется корректно, но проблема в том, что он изменяет только изображение ячеек, которые в данный момент видны, независимо от того, является ли этоРанее я выбрал некоторые из строк, которые сейчас не видны.Вот мой кодСкажите, что мне не хватает или что я должен сделать, чтобы изменить выбранные строки, которые не видны.

- (void)viewDidLoad{
deviceTableVIew.rowHeight = 72.0;
[deviceTableVIew setAllowsSelectionDuringEditing:YES];
[deviceTableVIew setAllowsMultipleSelectionDuringEditing:YES];

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mainBackground.jpg"]];
btnControl.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn-conrol.png"]];  
[super viewDidLoad];
}

-(IBAction)control:(id)sender{
btnControl.enabled = false;
btnControl.hidden = true;        
btnCancel.enabled = true;
btnCancel.hidden = false;    
stateToggleToolbar.hidden = false;    
[self.deviceTableVIew setEditing:YES animated:YES];
}

-(IBAction)setDevicesOn:(id)sender{

NSArray *paths = [self.deviceTableVIew indexPathsForSelectedRows];
for (NSIndexPath *path in paths) {
    UITableViewCell *cell = (UITableViewCell *)[self.deviceTableVIew cellForRowAtIndexPath:path];
    cell.imageView.image = [UIImage imageNamed:@"device-on-image.png"];
}

controlStatus = NO;        
btnControl.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn-conrol.png"]];        
stateToggleToolbar.hidden = true;
}

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Табличные представления не поддерживают ячейки для каждой строки. При прокрутке клетки, выходящие из поля зрения, перерабатываются и используются для отображения ячеек.

Состояние «устройство включено» каждой ячейки не должно храниться только в изображении ячейки. У вас должен быть объект модели для каждой строки (или массива состояний и т. Д.), Который поддерживает это состояние. Таким образом, в cellForRowAtIndexPath: вы можете правильно настроить отображаемую ячейку.

1 голос
/ 28 марта 2012

(я предполагаю, что у вас есть массив пользовательских объектов или словарей, где хранится информация для заполнения ваших ячеек.)

Лучшая стратегия состоит в том, чтобы ваш setDevicesOn: метод обновил эту модель данных, чтобы указать, какое изображениеВы хотите отобразить и, когда оно закончится, вызвать reloadData.Затем, когда вызывается cellForRowAtIndexPath:, вы можете установить фактическое изображение ячейки на основе этого элемента данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...