基于 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
该行。
我有一个应用程序,其中包含 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
该行。