Как разрешить пользователям переупорядочивать разделы в UITableView

Я работаю над приложением с акциями, расположенными в портфелях. Таким образом, это естественное соответствие табличному представлению, и я работаю над редактированием; это достаточно просто, чтобы позволить пользователю добавлять или удалять акции, тащить их в одном портфолио или другом портфолио, но одна вещь, которую я не смог сделать изящно, – это позволить пользователю перетащить один портфель выше или ниже другого.

Сейчас у меня есть хакерское решение, где строка 0 каждого раздела – это имя портфеля, и если они перетаскивают эту строку над другим портфелем, вся таблица перезагружается при переключении портфелей. Это работает, но не очень естественно.

Я уверен, что я не первый, кто столкнулся с этой проблемой; у кого есть более совершенное решение?

Связанный с этим вопрос – как мне разрешить пользователям создавать новый портфолио / раздел?

One Solution collect form web for “Как разрешить пользователям переупорядочивать разделы в UITableView”

Очень просто:

#import "ViewController.h" @interface ViewController () @end @implementation ViewController { NSMutableArray *_data; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _data = [NSMutableArray arrayWithObjects:@"One", @"Two", @"Three", nil]; self.tableView.editing = YES; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _data.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier = @"reuseIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; } cell.textLabel.text = _data[indexPath.row]; cell.showsReorderControl = YES; return cell; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleNone; } - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath { [_data exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row]; } @end 

РЕДАКТИРОВАТЬ:

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

https://github.com/MichaelSnowden/TableViewInCell

Если это не сработает для вас, попробуйте сделать UITableView moveSection:(NSInteger) toSection:(NSInteger) выглядеть красиво. Документация для этого метода приведена здесь .

Мой опыт с вышеописанным методом заключался в том, что он очень прост в использовании, и он выглядит хорошо, когда он называется. Разумным способом использовать его было бы создание заголовков с помощью распознавателей жестов. В первом касании выделите этот раздел и запишите, что indexPath, а во втором касании вызовите метод на двух указательных дорожках. Он должен работать хорошо, но вы не получите от него перетаскивания.

  • UITableView и UIView с клавиатуройWillShow
  • iOS TableViewController в PopOver исчезает после касания таблицы
  • ; не работает, пока я не прокручу tableView
  • UIViewController init vs initWithNibName: bundle:
  • UICollectionView в течение последнего UITableViewCell и конгруэнтной прокрутки? Как?
  • JSON-анализ swift, массив не имеет значения вне NSURLSession
  • Как настроить UITableView на сгруппированный стиль
  • Каков наилучший способ обеспечения перезагрузки UITableView?
  • UItableview scrollToRowAtIndexPath не отображает последнюю строку правильно
  • Несколько проблем с воспроизведением видео в UITableViewCell
  • Прокрутите до последнего UITableViewCell, используя scrollToRowAtIndexPath: atScrollPosition: анимированный с использованием методов NSFetchedResultsControllerDelegate
  • Interesting Posts

    Как рассчитать высоту и ширину объекта, используя камеру только в iOS?

    iPhone iOS, как заставить UIRotationGestureRecognizer и UIPinchGestureRecognizer работать вместе, чтобы масштабировать и поворачивать UIView с subviews?

    Форматирование NSTimeInterval

    UITableView с использованием Swift

    Задача-Частная дилемма

    Обнаружение касания маскированной части спрайта (в отличие от скрытой части), быстрой, spritekit

    Очки для заметок для будущего обновления приложения без новой установки на iPhone?

    График Facebook api не работает

    как сохранить путь изображения в plist?

    Функция Swift Generic вызывает другую универсальную функцию

    Каково имя этого элемента интерфейса? Указывает положение слайда / страницы

    Как простить Auto Layout при добавлении / удалении ограничений?

    Сортировка массива разделов NSFetchedResultsController

    Alamofire – Alamofire.AFError.responseSerializationFailed – Xcode 8

    Как возможно, что высота UITableViewCellContentView отличается от heightForRowAtIndexPath:

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