У меня есть представление коллекции, данные обновляются с помощью некоторых инструментов и файла JSON онлайн.Значения постоянно обновляются (постоянно) в ячейках.
Теперь мне нужно реализовать кнопку, чтобы «заморозить» значения и остановить любое обновление значений.Просто сохраните значения, которые отображались в коллекции, в неизменном виде .
У меня есть несколько разных коллекций в разных представлениях на одном и том же экране, поэтому я бы предпочел обработать "замораживание" значений в UIViewController этого конкретного представления коллекции (не в модели данных или методах выборки данных.)
//At this time, I have my button setup. An IBAction connection that keeps track of the `BOOL` value of whether the button has been pressed or not.
- (IBAction)holdButtonPressed:(UIButton *)sender {
_holdBtn.selected = ![_holdBtn isSelected];
if(_holdBtn.isSelected) {
//frozen values
[self holdMeasurementAirArray];
UIImage *btnImage = [UIImage imageNamed:@"hold"];
[_holdBtn setImage:btnImage forState:UIControlStateNormal];
} else {
//LIVE values
UIImage *btnImage = [UIImage imageNamed:@"live"];
[_holdBtn setImage:btnImage forState:UIControlStateNormal];
}
}
Создана функция (метод) [self holdMeasurementAirContainer:BOOL]
, которая будет отвечать за любую работу, которую мне нужно сделать для этого.целый новый массив для хранения копии значений, когда выбрано holdButton
-(void)holdMeasurementAirArray {
returnCellsCopy = [_returnCells copy];
supplyCellsCopy = [_supplyCells copy];
}
И заполнение таблицы этими значениями в cellForItemAtIndexPath
до тех пор, пока пользователь снова не нажмет live
значения
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MeasurementCell *cell = (HGMeasurementCell *)[collectionView dequeueReusableCellWithReuseIdentifier:self.measurementCellIdentifier forIndexPath:indexPath];
if(_holdBtn.isSelected == NO) { // IF HOLD ISNT TAPPED
NSArray <MeasurementValue *> *data;
if ([collectionView isEqual:self.return]) {
data = _returnCells;
} else if ([collectionView isEqual:self.supply]) {
data = _supplyCells;
}
HGMeasurementValue *cellData = [data objectAtIndex:indexPath.section];
cell.measurement = cellData;
cellData.collectionView = collectionView;
cellData.indexPath = indexPath;
[cell.measureLabel setText:cellData.value];
[cell.measureLabel setTextColor:cellData.labelColor];
return cell;
} else {
NSArray *holdData;
if ([collectionView isEqual:self.return]) {
holdData = returnCellsCopy;
} else if ([collectionView isEqual:self.supply]) {
holdData = supplyCellsCopy;
}
HGMeasurementValue *holdCellData = [holdData objectAtIndex:indexPath.section];
cell.measurement = holdCellData;
holdCellData.collectionView = collectionView;
holdCellData.indexPath = indexPath;
[cell.measureLabel setText:holdCellData.value];
[cell.measureLabel setTextColor:holdCellData.labelColor];
return cell;
}
}
... Но это не работает.он просто обновляет значения как обычные.Несмотря на то, что я сделал [copy]
массивов, я подумал, что это похоже на создание неизменного снимка этого массива в том месте и времени (что мне и нужно).
Приложение не падает, когда я нажимаю на кнопку, поэтому оно постоянно заполняется массивами.
Я везде на SO искал способ сделать это или методы, которые мне нужно попробовать.
Есть ли какие-нибудь вспомогательные методы, которые могли бы мне помочь?Вы видите что-то, чего мне не хватает, чтобы перестать обновлять клетки?Я неправильно понимаю, что делает [копия]?Если да, не могли бы вы объяснить дальше?Цель разработки: сохранить значения, которые были показаны в коллекции. Посмотреть в неизменном виде
Всё, что угодно, большое спасибо!