将行复制到UITableView中的另一个部分

时间:2013-08-07 10:27:15

标签: ios objective-c uitableview

当我点击行中的按钮时,我想将一行复制到另一个部分。我已经完成了。但是只有文本被复制。我还想移动该行中的图像。

-(void)moveRowToAnotherSection:(id)sender{

   UIButton *button = (UIButton *)sender;
   UITableViewCell *cell = (UITableViewCell *)button.superview;
   NSMutableArray *tempArr = [[NSMutableArray alloc] init];
   [[self tableView] beginUpdates];

    [tempArr addObject:[NSIndexPath indexPathForRow:self.favouritesArray.count inSection:0]];
    [self.favouritesArray insertObject:cell.textLabel.text atIndex:self.favouritesArray.count];
    [[self tableView] insertRowsAtIndexPaths:(NSArray *)tempArr withRowAnimation:UITableViewRowAnimationFade];

   [[self tableView] endUpdates];

}

1 个答案:

答案 0 :(得分:0)

我想提出三点:

1)您想在点击特定行时移动图像,对吗? 那么为什么不使用Tableview委托方法 - didSelectRowAtIndexPath

2)UITableView中有一个用于移动行的方法。这是来自Apple文档:

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

将指定位置的行移动到目标位置。

以下是将抽头行移动到第0行第0行的代码。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:0];
        [tableView beginUpdates];
        [tableView moveRowAtIndexPath:path toIndexPath:indexPath];
        [tableView moveRowAtIndexPath:indexPath toIndexPath:path];
        [tableView endUpdates];
    }

3)第三点是主要的一点。 UITableView默认情况下提供重新排序控件,如果您想通过拖动而不是点击来重新排序行,则可以按照以下步骤实现此目的:

第1步:

将您的tableview设置为编辑模式。通常这是通过编辑按钮完成的。

[_yourTableView setEditing:YES animated:YES];

第2步:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 分配

cell.showsReorderControl = YES;

第3步:

实施UITableViewDataSource的方法

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath{
// here you do all the reordering in your dataSource Array. Because dragging rows change the index of your row but the change should reflect in yopur array as well.
}

多数民众赞成,您不需要在beginUpdates和endUpdates块下编写任何代码。你只需要执行这三个步骤。

阅读this,了解TableView

中有关重新排序的所有信息