我有一个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);
}];
}
}
任何人都可以看到我在这里做错了吗?