UITableView를 특정 위치로 스크롤하는 방법
표의 셀을 특정 위치로 스크롤하려면 어떻게해야합니까? 높이에 따라 3 줄이 표시된 테이블이 있습니다. 내가 원하는 것은 테이블의 높이에 따라 첫 번째 행을 클릭하면 첫 번째 행이 스크롤되고 새 위치 (가운데)를 가져오고 다른 행에 대해서도 동일합니다. contenOffset을 시도했지만 작동하지 않았습니다 ..
편집 :
간단히 말해서 데이터 선택기와 같은 것은 선택기에서 행을 선택하면 행이 중앙으로 스크롤됩니다.
감사..
다음과 같이 - (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];
}
Use [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:scrollPosition animated:YES];
Scrolls the receiver until a row identified by index path is at a particular location on the screen.
And
scrollToNearestSelectedRowAtScrollPosition:animated:
Scrolls the table view so that the selected row nearest to a specified position in the table view is at that position.
Swift 4.2 version:
let indexPath:IndexPath = IndexPath(row: 0, section: 0)
self.tableView.scrollToRow(at: indexPath, at: .none, animated: true)
Enum: These are the available tableView scroll positions - here for reference. You don't need to include this section in your code.
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()
}
}
It is worth noting that if you use the setContentOffset
approach, it may cause your table view/collection view to jump a little. I would honestly try to go about this another way. A recommendation is to use the scroll view delegate methods you are given for free.
Simply single line of code:
self.tblViewMessages.scrollToRow(at: IndexPath.init(row: arrayChat.count-1, section: 0), at: .bottom, animated: isAnimeted)
참고URL : https://stackoverflow.com/questions/5856427/how-to-scroll-uitableview-to-specific-position
'IT Share you' 카테고리의 다른 글
jquery 애니메이션 배경 위치 (0) | 2020.12.09 |
---|---|
UIPanGestureRecognizer를 사용하여 패닝되는 방향을 어떻게 캡처 할 수 있습니까? (0) | 2020.12.09 |
Subversion 잠금 오류를 수정하는 방법 (0) | 2020.12.09 |
XML 스타일을 사용하여 Android에서 사용자 지정 단추를 만드는 방법 (0) | 2020.12.09 |
젬에 레이크 작업 포함 (0) | 2020.12.08 |