Воспроизведение изображений в виде таблиц при прокрутке с использованием пользовательского табличного представления

У меня есть Tableview, и я использую ячейку customTableview для отображения ячейки

в ячейке у меня есть 5 кнопок (кнопки рейтинга), когда я нажимаю на определенную кнопку, изображение кнопки должно изменить его работу, но когда я прокручиваю табличное представление снова, они меняются на обычные кнопки рейтинга, для ясности см. следующие изображения

Это изображение перед прокруткой и не нажатие кнопки на кнопке

Это изображение перед прокруткой и не нажатие кнопки на кнопке

после нажатия на кнопки рейтинга изображение меняется следующим образом:

введите описание изображения здесь

но при прокрутке ячеек снова меняется на первое изображение

пожалуйста, помогите мне

Код:

- (UITableViewCell )tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; dataCell = (DataCel)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (dataCell==nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DataCel" owner:self options:nil]; dataCell = [nib objectAtIndex:0]; } return dataCell; } 

  • ячейки tableviews меняются после прокрутки вниз
  • Как можно добавить тень к сгруппированному UITableView (как видно из официального приложения Twitter)?
  • табличное пространство боковой поверхности Swift
  • Ошибка SIGSEGV IOS - UiGestureRecognizer в UITableView
  • Создание всего текста в ячейке UITableView
  • make button в заголовке секции tableview float / align right программно // Swift
  • Анимирование заголовка и нижнего колонтитула UITableView
  • С динамическим типом в iOS 7, как мне влиять на более сложные проблемы с раскладкой, например, между метками / представлениями?
  • 5 Solutions collect form web for “Воспроизведение изображений в виде таблиц при прокрутке с использованием пользовательского табличного представления”

    вы должны сохранить изображение кнопок и

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    вставьте код, чтобы он обновлялся для ex:

      static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { //create your cell here if it was not created cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; [cell.textLabel setFont:[UIFont boldSystemFontOfSize:13]]; [cell.textLabel setTextColor:[UIColor darkGrayColor]]; [cell.detailTextLabel setFont:[UIFont boldSystemFontOfSize:11]]; [cell.detailTextLabel setTextColor:[UIColor lightGrayColor]]; cell.detailTextLabel.numberOfLines = 2; } NSArray *array = [imageArray objectAtIndex:[indexPath row]]; if([[array objectAtIndex:3] isEqual:@"rate3"]) { //set the code for the rating 3 } else { //insert another rate depending on your object } 

    Это связано с тем, что каждый раз, когда вы UITableView , он обновляет свои значения из предоставленных вами данных! Таким образом, значение не сохраняется. Чтобы это не происходило при каждом прокрутке базы данных, вы можете использовать эту

     static NSString *cellIdentifier = @"Identifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if(cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil]; } for(id obj in cell.contentView.subviews) { if([obj isKindOfClass:[UIImageView class]] || [obj isKindOfClass:[UILabel class]]) { [obj removeFromSuperview]; } } 

    Это не позволит перекрывать значения.

    При прокрутке ячейки воссоздаются, поэтому вам нужно сохранить выбранные значения в отдельном массиве и установить его в методе cellForRowAtIndexPath

    Это происходит потому, что каждый раз, когда вы прокручиваете представление таблицы, он снова создает ячейку tableview. поэтому вы можете использовать массив для повторного использования.

      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellId = @"cellId"; UITableViewCell *cell = [categoriesTableview dequeueReusableCellWithIdentifier:cellId]; if (cell==nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; } for (UIView *subview in [cell.contentView subviews]) { [subview removeFromSuperview]; } // ui goes here return cell } 
    Interesting Posts
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.