我有一个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);
}];
}
}
谁能看到我在这里做错了什么?