2012-06-09 9 views
1

Я разрабатываю приложение Iphone, оно содержит UITableview с 8 ячейками. Я реализую NSMutableArray для хранения каждой ячейки при времени создания ячейки, но время загрузки таблицы только предоставляет отображаемую ячейку Хранить в массиве. Чтобы избежать этой проблемы, у меня есть autoscroll представление таблицы и получить общую ячейку для хранилища в массив со следующим кодом;Автоматический прокрутка вниз и вверх в UITableview

-(void)viewDidAppear:(BOOL)animated{ 

    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:[musicGenre count]-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 

    } 

Это работает perfectly.But теперь я хочу прокручивать это снизу вверх, в то же время (время загрузки) .Как это реализовать? Спасибо заранее.

+0

почему вы рассматриваете в качестве вопроса? почему вы хотите загрузить все ячейки с самого начала? – Apurv

+0

Благодарим вас за повторное воспроизведение. Я хочу добавить все ячейки tabelview в массив NSMutable с самого начала. – John

+0

@John Что такое MusicGenre? Это показывает мне плохой доступ, когда я использовал код пользователя. Я использовал musicGenre как NSMutableArray. – Muju

ответ

8

С UITableView наследует от UIScrollView вы могли бы использовать что-то вроде этого:

- (void)viewDidAppear:(BOOL)animated{ 

    [table setContentOffset:CGPointMake(0.0, table.contentSize.height - table.bounds.size.height) 
       animated:NO]; 

  [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:[musicGenre count]-1 inSection:0]             
        atScrollPosition:UITableViewScrollPositionBottom 
          animated:YES]; 
} 

EDIT:

Если вы хотите, чтобы первоначальный переход от верхней части к bottm также анимированные просто использовать:

- (void)viewDidAppear:(BOOL)animated{ 

    [table setContentOffset:CGPointMake(0.0, table.contentSize.height - table.bounds.size.height) 
       animated:YES]; 

    [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:[musicGenre count]-1 inSection:0]             
        atScrollPosition:UITableViewScrollPositionBottom 
          animated:YES]; 
} 

Но, пожалуйста, подумайте об опыте пользователя - это то, что необходимо для анимации? Поскольку пользователи (особенно если они часто используют ваше приложение), не хотят терять время. Анимация отличная, когда она улучшает работу пользователей и не вызывает задержки в рабочем процессе.

EDIT2: для прокрутки вверх (от текущей позиции), вы можете использовать:

[table setContentOffset:CGPointZero 
       animated:YES]; 
+0

Благодарим вас за ответ. Я реализовал этот код, но это не дает точного ответа. Фактически моя потребность в том, чтобы сначала прокрутить сверху вниз, а второй прокрутить снизу вверх. Возможно ли это в ViewDidApper? Это означает следующее. - (void) viewDidAppear: (BOOL) анимированный { [tableView scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: [musicGenre count] -1 inSection: 0] atScrollPosition: UITableViewScrollPositionBottom анимированный: ДА]; [tableView scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0] atScrollPosition: UITableViewScrollPositionTop анимированный: ДА]; } – John

+0

Я отредактировал свой ответ, но не уверен, правильно понял ли вы вас. –

+0

поблагодарить u.Этот код работает только для прокрутки сверху вниз. Я хочу, чтобы оба значения были сверху вниз и снизу вверх. Это для сохранения исходной позиции (формат сверху вниз). Я реализовал UITableViewScrollPositionBottom и UITableViewScrollPositionTop в одном и том же событии (viewDidApper), но UITableViewScrollPositionBottom работал отлично, а UITableViewScrollPositionTop не работал. Что такое резонанс для этого? пожалуйста, переиграйте меня? – John

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