当我点击行中的按钮时,我想将一行复制到另一个部分。我已经完成了。但是只有文本被复制。我还想移动该行中的图像。
-(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];
}
答案 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