ios - 基于 UITableView Edit 重新排序 NSArray

标签 ios objective-c uitableview nsarray

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

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

最佳答案

我假设您有一系列歌曲,名为 songsArray用于填充 TableView 。然后当发生重新排序时,添加此方法。

- (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;
}

这允许用户对 TableView 中的所有行重新排序,如果您不想让用户对特定行重新排序,请添加对 indexPath.row 的检查并返回NO对于该行。

关于ios - 基于 UITableView Edit 重新排序 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187750/

相关文章:

ios - AVExportSession 导出视频超慢

ios - 如何解决 iOS UITableView 在滚动时覆盖 UILabel 和 UITextField?

ios - 在 UITableView 中滚动后 UIButton 颜色发生变化

objective-c - 如何在编译时填充 NSArray?

ios - 如何从 POVoiceHUD 播放录制的音频文件

swift - 具有多个部分和多行的 UITableView。我需要部分独立运行

iphone - UITableView数据在滚动时多次显示

ios - 如何在 iOS 上检索 UDID?

ios - Xcode 9.4.1 Storyboard 场景组件周围的蓝色边框

iOS - 使用 Storyboard和自动布局使 UIScrollView 居中