0

我有一个UIImageView当前移动到UITableView用户选择的任何行的 a。此功能运行良好。但是,我现在想做的也是通过一个按钮来控制它的移动。我有两个按钮,一个用于上升一排,一个用于下降一排。两个按钮具有不同的标记值,但调用相同的IBAction方法。我想知道的是如何UIImageView向上/向下移动一行?我目前有以下代码可以正常工作:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

  [self.view bringSubviewToFront:_imageView];

    [UIView animateWithDuration:.3 animations:^{
        CGRect rect = [self.view convertRect:[tableView rectForRowAtIndexPath:indexPath] fromView:tableView];
        _imageView.frame = rect;
    }];

}

上述方法可以很好地将 移动UIImageView到用户选择的任何行。

如何修改此代码,以便每次按下向上按钮时严格向上移动一行,每次按下向下按钮时向下移动一行?

4

1 回答 1

1

从 NSIndexPath 对象中的 didSelectRowAtIndexPath: 方法中的最后一个选定行获取表格视图单元格的 indexPath。

 - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

  [self.view bringSubviewToFront:_imageView];
  self.indexPath = indexPath;

    [UIView animateWithDuration:.3 animations:^{
        CGRect rect = [self.view convertRect:[tableView rectForRowAtIndexPath:indexPath] fromView:tableView];
        _imageView.frame = rect;
    }];

}

在您的按钮操作方法中处理 indexPath 以查看上面/下面的单元格是否在同一部分中,在这种情况下增加/减少该行,如果在其他部分中,您可能需要计算新的 indexPath。

-(IBAction)btnActn:(id)sender{
    if(btn.tag ==0){
     self.indexPath=[NSIndexPath indexPathForRow:self.indexPath.row+1 inSection:self.indexPath.section];
    //Put animation code or call animation function 
    }
}

然后使用您已经使用的相同方法获取框架上方或下方的一个单元格的矩形,并将 _imageView 的位置转换为新位置。

于 2013-06-05T21:43:22.107 回答