Как мы можем динамически добавлять новую ячейку между двумя данными ячейкой в ​​TableView?

Мне нужно добавить новую ячейку для выбора ячейки таблицы. Новая ячейка должна находиться ниже выбранной ячейки. Мы можем сделать это?

Ниже приведен код, в котором я создаю 4 ячейки и хочу вставить ячейку между 2 и 3.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; cell= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; if(indexPath.row == 0){ cell.textLabel.text = @"My Tweets"; cell.textLabel.textColor = [UIColor whiteColor]; cell.backgroundColor = [UIColor blackColor]; cell.imageView.image = [UIImage imageNamed:@"tweets.png"]; } if(indexPath.row == 1){ cell.textLabel.text = @"Search"; cell.backgroundColor = [UIColor blackColor]; cell.textLabel.textColor = [UIColor whiteColor]; cell.imageView.image = [UIImage imageNamed:@"search.png"]; } if(indexPath.row == 2){ cell.textLabel.text = @"Followers"; cell.textLabel.textColor = [UIColor whiteColor]; cell.backgroundColor = [UIColor blackColor]; cell.imageView.image = [UIImage imageNamed:@"followers.png"]; } if(indexPath.row == 3){ cell.textLabel.text = @"Following"; cell.textLabel.textColor = [UIColor whiteColor]; cell.backgroundColor = [UIColor blackColor]; cell.imageView.image = [UIImage imageNamed:@"following.png"]; } return cell; 

}

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //here I have to insert a new cell below on the click this existing cell. if(indexPath.row == 1) { NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:0]; NSArray *indexPaths = [NSArray arrayWithObject:newIndexPath]; [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPaths] withRowAnimation:UITableViewRowAnimationAutomatic]; } 

}

3 Solutions collect form web for “Как мы можем динамически добавлять новую ячейку между двумя данными ячейкой в ​​TableView?”

Вы должны обновить свой источник данных, а затем вызвать этот метод UITableView:

 - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

Это вызовет

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

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

Вы не создали бы новую ячейку в методе didSelectRowAtIndexPath, как вы это делаете в коде, который вы разместили.


отредактирован для добавления информации.

Чтобы установить массив indexPaths (для вашего случая), вы можете сделать это:

 NSInteger row = [indexPath row]; NSInteger section = [indexPath section]; NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:row+1 inSection:section]; NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; 

Что касается вашего вопроса, не делайте indexpath.row + 1 при создании массива по пути индекса, а затем вызывайте insertrowatindexpath в tableview ……… aloso reload table, и все готово.

Вы можете добавить этот метод для добавления строк в таблицу

  - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; NSArray *paths = [NSArray arrayWithObject: [NSIndexPath indexPathForRow:1 inSection:0]]; if (editing) { [[self tableView] insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationTop]; } else { //Your Operation [[self tableView] deleteRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationTop]; } [tableView reloadData]; } 

Вы можете использовать описанный выше метод, если у вас есть подклассы UITableview else, пройдя через учебник

Также укажите, какое событие вы хотите вставить в строки. Просто чтобы вставить строку, вы можете реализовать следующую логику:

Создать массив для путей: –

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 

вам нужно указать номер предыдущей строки, после которой вы хотите вставить строку и раздел, а затем вы вызываете метод insertRowsAtIndexPaths: withRowAnimation: на столе и перезагружаете его.

Просто вызовите делегатов insertrowsatindexpath в начале цикла обновления и завершения обновления. Например, попробуйте сделать это следующим образом:

 [tableViewForFinishRace beginUpdates]; NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:arrayForTitle.count-1 inSection:0]; NSLog(@"index path for insertion =%@",newIndexPath); [tableViewForFinishRace insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationTop]; [arrayForTitle insertObject:@"Gearing Up for a" atIndex:arrayForTitle.count-1]; [arrayForImage insertObject:@"gearing-up-icon.jpeg" atIndex:arrayForTitle.count-2]; [tableViewForFinishRace endUpdates]; 
  • Как настроить игровой движок Irrlicht в Xcode для развертывания ios
  • Папки «Images.xcassets» не существует
  • xcode не может добавить дополнительный проект в рабочее пространство
  • Почему все мои симуляторы Xcode 6.1.1 исчезли?
  • Утечка памяти в силуBridgeFromObjectiveC
  • Статическая библиотека iOS, скомпилированная с Xcode, запоминает исходные файлы
  • Различные настройки для Dev, AdHoc и App Store
  • Xcode Ui-automation - Тест не работает на физическом устройстве
  • Будет ли установка XCode 4.5 удалять iOS Simulator 5.1?
  • Портирование подклассов фильтра GPUImage в Swift
  • Не удалось создать модуль Darwin - проблемы с arm64
  • Interesting Posts

    Как сделать автоматические возобновляемые подписки привязаны к внутреннему пользователю, а не идентификатору Apple?

    RestKit 0.20 проблема с отображением вложенных объектов при использовании API

    Xcode LLDB Print Statement Fail – NSUndoManager

    Как удалить ARC из XCode

    Цель C – Iphone. Как я могу показать цифровую клавиатуру по умолчанию?

    Что такое имя системного шрифта iOS 9.3?

    SQLite.swift: лучший способ реализовать классы моделей, представляющие строки данной таблицы?

    Полюс UIAlertController деформирован

    Создание и воспроизведение звука быстрым

    Как добавить изображение в заголовок раздела UITableView с помощью swift?

    Как удалить дополнение в последнем абзаце из NSAttributedString, созданного из HTML, используя NSHTMLTextDocumentType

    Неизвестная причина сбоя (при включенном CrashReport) SIGTRAP. AFNetworking?

    Бесплатный рисунок на UIImage, встроенный в UIScrollView

    Проблема с Uicollectionview для nib, но не получила UICollectionView

    Как определить удаление IP-адреса ios

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.