UITableView重新排列单元格

时间:2013-12-26 14:47:09

标签: ios objective-c xcode uitableview

我尝试通过Apple的documentation实现此方法。

- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath

但是在我实现此方法之前,我的代码无法运行:

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath

我完全不知道为什么它不起作用以及为什么它现在有效。

2 个答案:

答案 0 :(得分:2)

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath

这是将表视图中特定位置的行移动到另一个位置的数据源方法。当用户按下重新排序控件时,将调用此方法,并且必须重新排列数据,以便根据fromIndexpath和toIndexPath中的重新排序数据重新绘制表视图。

答案 1 :(得分:1)

- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath 
               toIndexPath:(NSIndexPath *)newIndexPath

适用于UITableView子类

 - (void)tableView:(UITableView *)tableView 
moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
       toIndexPath:(NSIndexPath *)toIndexPath

是否适用于数据源。显然,您没有使用子类,而是实现委托/数据源方法。这虽然有道理。如果您是子类,则只能有一个可能的表视图。如果您是一个数据源,您可以拥有任意数量的数据源(您可以成为100个表视图的数据源)。这样你就需要知道你正在处理哪个表视图,因此需要额外的参数。