如何滚动UITableView到特定的位置
我如何滚动表格的单元格到特定的位置? 我有一个表格显示3行(根据高度)。 我想要的是如果我点击第一行比根据表的高度第一行应滚动和获得新的位置(中心)和其他行相同。 我尝试contenOffset,但没有工作..
编辑:
简而言之,就像数据选取器一样,当我们在选取器中select任何一行时,该行就会滚动到中心。
谢谢..
它应该使用- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
使用它的- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [yourTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
atScrollPosition
可以采取以下任何值:
typedef enum { UITableViewScrollPositionNone, UITableViewScrollPositionTop, UITableViewScrollPositionMiddle, UITableViewScrollPositionBottom } UITableViewScrollPosition;
我希望这可以帮助你
干杯
[tableview scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
这将把你的tableview到第一行。
最后我发现…它会工作很好,当表格显示只有3行…如果行更多的变化应该是相应的… … –
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } // Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 30; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Configure the cell. cell.textLabel.text =[NSString stringWithFormat:@"Hello roe no. %d",[indexPath row]]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * theCell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; CGPoint tableViewCenter = [tableView contentOffset]; tableViewCenter.y += myTable.frame.size.height/2; [tableView setContentOffset:CGPointMake(0,theCell.center.y-65) animated:YES]; [tableView reloadData]; }
使用[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:scrollPosition animated:YES];
滚动接收器,直到由索引path标识的行位于屏幕上的特定位置。
和
scrollToNearestSelectedRowAtScrollPosition:animated:
滚动表格视图,以便在表格视图中最接近指定位置的选定行位于该位置。
Swift版本:
let indexPath:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0) self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.None, animated: true)
枚举:这些是可用的tableView滚动位置 – 这里供参考。 您不需要在代码中包含此部分。
public enum UITableViewScrollPosition : Int { case None case Top case Middle case Bottom }
DidSelectRow:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let theCell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath) if let theCell = theCell { var tableViewCenter:CGPoint = tableView.contentOffset tableViewCenter.y += tableView.frame.size.height/2 tableView.contentOffset = CGPointMake(0, theCell.center.y-65) tableView.reloadData() } }
值得注意的是,如果使用setContentOffset
方法,则可能会导致您的表视图/集合视图跳转一点。 我会诚实地尝试另一种方式。 build议使用免费赠送的滚动视图委托方法。