我有一个应用程序,里面有500多首教堂歌曲。我正在添加一个新功能,这将允许他们创建一个手动选择歌曲的"幻灯片放映"。现在的布局方式是,他们有一个所有歌曲的UITableView
,点击一首歌曲会将PPT的文件位置添加到NSArray
,并在行中添加一个复选标记。接下来,他们可以点击预览按钮,这将按照他们选择的顺序为他们提供所选歌曲的表格视图。
我想允许编辑模式删除歌曲或对其重新排序,但不确定如何对NSArray
进行重新排序,这样项目0将是他们在表视图中的第一首歌曲,而不仅仅是他们点击的第一首。
我假设您有一个名为songsArray
的歌曲数组,用于填充表视图。然后,当重新排序发生时,添加此方法。
- (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;
}
这允许用户对表视图中的所有行进行重新排序,如果您不想让用户对特定行进行重新排列,请添加对indexPath.row
的检查并返回该行的NO
。