0

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

-(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];

}
4

1 回答 1

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:

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

[_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 块下编写任何代码。你只需要实现这三个步骤。

阅读本文以了解有关重新排序的所有信息TableView

于 2013-08-07T11:47:16.783 回答