Знам, че това е по подразбиране собственост на пренареждане на tableviewcell клетки, когато UITableView е в режим на редактиране и потребител просто пренаредете редове, които се обработват от UITableViewController.
Според Apple Doc: Пренареждане на реда
Сега искам да направя нещо, когато плъзгам клеткатанад другите клетки, клетките в задната част не трябва да се пренареждат автоматично, само клетката, върху която изхвърлям изтеглената клетка, трябва да бъде пренаредена, нещо като Размяна на две клетки.
За по-добро разбиране вижте снимката по-долу. Би трябвало да мога Shift Jones на Room1 & контролерът на таблицата трябва да може автоматично да премества Smith2 в Room3.
По-долу са делегирани методи, които използвам:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
NSString *temp = [roomstoringArray objectAtIndex:sourceIndexPath.row];
[roomstoringArray removeObjectAtIndex:sourceIndexPath.row];
[roomstoringArray insertObject:temp atIndex:destinationIndexPath.row];
// [temp release];
}
Проблемът е:
- Как мога да спра други клетки да се пренареждат автоматично, докато аз прекарвам клетките над други.
- Няма нито един от делегираните методи, които се извикват, когато се използва Плъзнете клетката над другите, но само се нарича метод moveRowAtIndexPath когато една капка клетка върху него. Така че, дори не може да провери за някакво състояние и не намери никакъв обхват на това подобрение в съществуващия TableView.
Има ли имот с TableView, където азможе да спре такова поведение, за да извърши смяната между две клетки само там, където останалите редове остават в един и същ indexPath.Alos, може ли някой да ми помогне по някакъв друг начин, ако има такива.
Отговори:
0 за отговор № 1Използвайте тази връзка, за да получите ефекта, който искате. https://github.com/mystcolor/JTGestureBasedTableViewDemo
0 за отговор № 2
За проблем, който споменавате, моля, проверете делегатите от UITableView тук.
По-долу са полезни за вас методи.
targetIndexPathForMoveFromRowAtIndexPath
canMoveRowAtIndexPath
За Swap b / w два реда можете да получите представа за това отговор.