2016-01-22 2 views
0

У меня есть табличный вид, который загружает себя при выборе даты popover. Я хочу, чтобы последняя TableView клетка (которая не видна в данный момент), чтобы выбрать, и он должен перейти к нижнемуScroll tableView внизу для выбора последней строки

Я написал следующий код

- (void)viewDidLoad { 
    [_tableView reloadData];  
[self scrollTableToIndex]; 
[_tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:_selectedMeetingIndex inSection:0] animated:YES scrollPosition:UITableViewScrollPositionNone]; 
    [self tableView:_tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:_selectedMeetingIndex inSection:0]]; 
} 
-(void)scrollTableToIndex{ 

    if(_selectedMeetingIndex <= _arrMeetingsList.count/2){ 
     _isTableBottomScrolled = NO; 
     [_tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_selectedMeetingIndex inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
    }else{ 
     NSLog(@"_tableView.contentOffset.y %f",_tableView.contentOffset.y); 

     if (!_isTableBottomScrolled) { 
      _isTableBottomScrolled = YES; 
      CGFloat height = self.agendaList.contentSize.height - self.tableView.bounds.size.height; 
      [self.tableView setContentOffset:CGPointMake(0, height) animated:YES]; 

     } 
    } 
} 

Выбрана TableView клетка, но это не делает сначала прокрутите вниз, но если я выбираю другую дату с даты popover, она прокручивается в нижнюю часть и выбирается ячейка.

Я вызвал функцию «scrollTableToIndex» в viewDidAppear, но это не сработает.

Кроме того, если я использую это

[self.tableView setContentOffset:CGPointMake(0, CGFLOATMAX) animated:YES]; 

вместо следующей строки кода

CGFloat height = self.agendaList.contentSize.height - self.tableView.bounds.size.height; 
[self.tableView setContentOffset:CGPointZero animated:YES]; 

Если я это сделать, то код работает на 1-й раз, но во второй раз, после того как я выбрать дату из popover, tableview висит.

Я передала этот link

Пожалуйста, помогите.

ответ

1

Вот код, я использую для этого:

- (void) scrollToBottomAnimated:(BOOL) animated 
{ 
    CGSize contentSize = self.contentSize; 
    CGSize boundsSize = self.bounds.size; 
    if (contentSize.height > boundsSize.height - self.contentInset.bottom) 
    { 
     CGPoint bottomOffset = CGPointMake(0, contentSize.height - boundsSize.height + self.contentInset.bottom); 
     [self setContentOffset:bottomOffset animated:animated]; 
    } 
} 

Я держу это как один из моих методов UITableView категории, так что «я» просто UITableView

Смежные вопросы