【问题标题】:Reorder NSArray based on UITableView Edit基于 UITableView 重新排序 NSArray 编辑
【发布时间】:2015-12-09 19:50:36
【问题描述】:

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

我想允许编辑模式删除歌曲,或重新排序,但不知道如何让 NSArray 重新排序,所以项目 0 将是他们在 tableview 上的第一首歌,而不仅仅是他们点击的第一个。

【问题讨论】:

    标签: ios objective-c uitableview nsarray


    【解决方案1】:

    我假设您有一个名为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

    【讨论】:

    • 谢谢,这在 Obj-C 中看起来如何,因为我还没有完全转换为 Swift。
    • 谢谢,试试看效果如何。
    • 好的,我已经实现了 canMoveRowAtIndexPath,将 BOOL 设置为 YES,但是当我运行应用程序并进入该视图时,我没有移动任何东西的选项。
    • 当你想开始重新排序表视图时调用这个:tableView.setEditing(true, animated: true)
    • 对不起,obj-c。 [self.tableView setEditing:YES animated:YES];
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多