- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; if(row == 0) 返回NO; 返回YES; }
我的问题是:虽然我为第0行指定了NO。如果我尝试拖动第1行来替换第0行,动画就会让这种情况发生。问题是上述方法仅决定行右侧是否有移动图标。关于如何阻止第0行被取代的任何想法?
答案 0 :(得分:4)
使用
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
来自UITableViewDelegate
。
您可以这样做:
if ([proposedDestinationIndexPath row] > 0) {
return proposedDestinationIndexPath;
}
NSIndexPath *betterIndexPath = [NSIndexPath indexPathForRow:1 inSection:0];
return betterIndexPath;
(来自Joe Conway和Aaron Hillegass的“iPhone编程”)