基于 UITableView Edit 重新排序 NSArray

Reorder NSArray based on UITableView Edit

我有一个应用程序,其中包含 500 多首教堂歌曲。我正在添加一项新功能,允许他们创建 "slide show" 手动选择的歌曲。现在的布局方式是,他们有所有歌曲的 UITableView,点击一首歌曲会将 PPT 的文件位置添加到 NSArray,并在该行添加一个复选标记。在此之后,他们可以单击“预览”按钮,这将按照他们选择的顺序为他们提供他们选择的歌曲的表格视图。

我想允许编辑模式删除歌曲或重新排序,但我不确定如何同时重新排序 NSArray,这样项目 0 将是他们在tableview,不仅仅是他们点击的第一个。

我假设您有一个名为 songsArray 的歌曲数组,用于填充 table 视图。然后当重新排序发生时,添加这个方法。

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
    NSObject *songToMove = [self.songsArray objectAtIndex:sourceIndexPath.row];
    [self.songsArray removeObjectAtIndex:sourceIndexPath.row];
    [self.songsArray insertObject:stringToMove atIndex:destinationIndexPath.row];
}

别忘了实施canMoveForRowAtIndexPath

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
   return YES;
}

这允许用户重新排序您的 table 视图中的所有行,如果您不想让用户重新排序特定行,请添加检查 indexPath.row 和 return NO 该行。