IOS: Как узнать, прокручиваете ли вы пронумерованную строку в UITableView?

Мне нужен способ определить, прокручиваю ли я пятый ряд в UITableView. Как только я пройду пятую строку, я хочу вызвать метод. Я не знаю, как это сделать или с чего начать. Я отправлю код UITableView. Если кто-нибудь может мне помочь, я буду глубоко этому благодарен.

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
ListingCell *cell ;
if (cell == nil)
{
 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ListingCell" owner:self options:nil];
 cell = [nib objectAtIndex:0];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 100;
}

-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 20;
}
2 ответа

Все, что вам нужно сделать, это реализовать метод UIScrollViewDelegate -scrollViewDidScroll. Затем вы можете вручную вычислить все, что хотите, из текущего свойства contentOffset UITableView.

-(void)scrollViewDidScroll:(UIScrollView *)inScrollView
{
 int currentOffsetY = inScrollView.contentOffset.y;

 //Now use that y position to figure out if you have scrolled past where you want.
}

Вы также можете использовать логическое значение, поэтому один раз вызовите метод "прошлый".


Попробуйте следующее:

- (void)scrollViewDidScroll:(UITableView *)tableView
{
 CGRect row = [tableView rectForRowAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:0];
 if (tableView.contentOffset.y > CGRectGetMaxY(row)) {
 // you did it
 }
}

Или CGRectGetMinY, в зависимости от того, чего именно вы пытаетесь достичь.

licensed under cc by-sa 3.0 with attribution.