0

我有一个UITableView包含一个UIImageView基于用户按下的两个按钮向上/向下滚动的。

屏幕上UITableView有一个可见区域,它不显示表中的所有行。

UIImageView的一次向上/向下一行,但不幸的是,当它转到用户看不到的一行时,屏幕就会消失。

我想做的是让表格自动向上/向下滚动一行,每次用户UIImageView向上/向下移动离屏的一行。

最终,一旦用户到达列表的末尾,如果用户位于表格的最顶部,那么我将UIImageView移动到最底部UITableView(即移动到最后一行),这意味着表应该向上滚动并显示表中的最后一行。

反之亦然(即如果 位于UIImageView列表的最底部,则按下向下按钮应将用户带到表格的最顶部,并且表格应自动滚动到列表的最开头,向用户显示表中的第一行)。

这是我在中移动的UIImageView代码UITableView

- (IBAction)buttonClicked:(id)sender {

    if([sender tag] == 1){

        if (_index.row == 0) {

            _index = [NSIndexPath indexPathForRow:[_tableData count] - 1 inSection:_index.section];
            //here is my code that controls the scrolling of the table
            [_table scrollToRowAtIndexPath:_index atScrollPosition:UITableViewScrollPositionTop animated:YES];

        }

        else
            _index = [NSIndexPath indexPathForRow:_index.row - 1 inSection:_index.section];

        [UIView animateWithDuration:.3 animations:^{
            CGRect rect = [self.view convertRect:[_table rectForRowAtIndexPath:_index] fromView:_table];

            CGFloat floatx = _imageView.frame.origin.x - rect.origin.x;
            _imageView.frame = CGRectMake(rect.origin.x + floatx, rect.origin.y, _imageView.frame.size.width, _imageView.frame.size.height);
        }];

    }

    else if([sender tag] == 2){

        if (_index.row + 1 == [_tableData count]) {

            _index = [NSIndexPath indexPathForRow:0 inSection:_index.section];
            //here is my code that controls the scrolling of the table
            [_table scrollToRowAtIndexPath:_index atScrollPosition:UITableViewScrollPositionTop animated:YES];

        }

         else
             _index = [NSIndexPath indexPathForRow:_index.row + 1 inSection:_index.section];

        [UIView animateWithDuration:.3 animations:^{
            CGRect rect = [self.view convertRect:[_table rectForRowAtIndexPath:_index] fromView:_table];

            CGFloat floatx = _imageView.frame.origin.x - rect.origin.x;
            _imageView.frame = CGRectMake(rect.origin.x + floatx, rect.origin.y, _imageView.frame.size.width, _imageView.frame.size.height);
        }];

    }

}

谁能看到我在这里做错了什么?

4

0 回答 0