我有一个包含3个部分的UITableView,在编辑模式下可以更改其部分内的行位置而不是其他部分吗?实际上我可以将单元格移动到任何部分。
由于
答案 0 :(得分:8)
许多正确的答案,但没有人提出完整且妥善的回复。
使用表格视图委托方法 tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath: ,如下所示。
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
{
if (proposedDestinationIndexPath.section != sourceIndexPath.section)
{
return sourceIndexPath;
}
return proposedDestinationIndexPath;
}
不要忘记在 tableView:moveRowAtIndexPath:toIndexPath: 数据源方法中再次检查,如下所示,您不希望在运行时运行应用程序逻辑目的地与来源类似。
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
if(sourceIndexPath == destinationIndexPath)
{
return;
}
//application logic
}
答案 1 :(得分:4)
如果我理解你的问题,那么是:使用
- (NSIndexPath*) tableView: (UITableView*) tableView targetIndexPathForMoveFromRowAtIndexPath: (NSIndexPath*) sourceIndexPath toProposedIndexPath: (NSIndexPath*) proposedDestinationIndexPath
答案 2 :(得分:0)
试试这个
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
if( fromIndexPath == toIndexPath ) {
return;
}
答案 3 :(得分:0)
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
你的UITableView委托的。
在此方法中,检查sourceIndexPath.section:
我没有写代码,所以你很乐意练习而不是copy'n'paste;)
(编辑:为选项添加列表样式)
答案 4 :(得分:0)
在
moveRowAtIndexPath:toIndexPath:
添加此项检查:
if ( fromIndexPath.section != toIndexPath.section ) return; // prevent moving to another section.