Временно прекратить обновление объекта ячейки - PullRequest
0 голосов
/ 28 января 2019

У меня есть представление коллекции, данные обновляются с помощью некоторых инструментов и файла 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 искал способ сделать это или методы, которые мне нужно попробовать.

Есть ли какие-нибудь вспомогательные методы, которые могли бы мне помочь?Вы видите что-то, чего мне не хватает, чтобы перестать обновлять клетки?Я неправильно понимаю, что делает [копия]?Если да, не могли бы вы объяснить дальше?Цель разработки: сохранить значения, которые были показаны в коллекции. Посмотреть в неизменном виде

Всё, что угодно, большое спасибо!

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