Прокрутите сразу к строке в таблице перед шоу представления

Представление с таблицей продвинуто на экран, и я хочу, чтобы это прокрутило к определенной строке в таблице, прежде чем экран на самом деле отобразится. Я использую этот код в рамках финала viewcontroller.

NSIndexPath *scrollToPath = [NSIndexPath indexPathForRow:5 inSection:0]; 
[theTable scrollToRowAtIndexPath:scrollToPath atScrollPosition:UITableViewScrollPositionTop animated:NO];

Когда я поместил его в viewDiDAppear метод, затем это кратко высвечивается от начального положения таблицы (наверху) к строке, которую я хочу. Я не хочу, чтобы это показало исходное положение. Если я поместил его в viewDidLoad или viewWillAppear затем, это отказывает с NSRangeException, по-видимому, потому что таблица еще не настраивается.

Как я заставил бы это прокручивать, не показывая исходное положение?

11
задан cannyboy 28 May 2010 в 20:05
поделиться

3 ответа

Спасибо Shaggy и Dying Cactus за то, что указали мне правильное направление. Ответ - загрузить таблицу и прокрутить в viewWillAppear:

-(void)viewWillAppear:(BOOL)animated
{
    [theTable reloadData];
    NSIndexPath *scrollToPath = [NSIndexPath indexPathForRow:5 inSection:0]; 
    [theTable scrollToRowAtIndexPath:scrollToPath atScrollPosition:UITableViewScrollPositionTop animated:NO];   
}
15
ответ дан 3 December 2019 в 03:51
поделиться

Если я помещу его в viewDidLoad или viewWillAppear, тогда он вылетает с NSRangeException, предположительно потому, что стол еще не накрыт.

Почему стол еще не накрыт? Каким методом вы его настраиваете?

2
ответ дан 3 December 2019 в 03:51
поделиться

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

Я боюсь предлагать это, поскольку кажется, что те, кто предлагает вещи, терпят поражение ... но ... я был удивлен, что не было легкого решения ... так что в итоге я сделал следующее:

Я использую ABTableViewCell (вы можете погуглить) для настраиваемых нарисованных ячеек (красиво и быстро!), И когда меня вызывают, чтобы НАРИСОВАТЬ вторую строку (вы можете сделать это в своих настраиваемых ячейках без ABTableViewCell), я установил его там с один семафор огня:

if ( self.mOnlyOnce == NO && theRow > 1 ) {
    self.mOnlyOnce = YES;
    [self.mParentTable scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] atScrollPosition:UITableViewScrollPositionTop animated:NO];
}

(выберите нужную строку / раздел, как вам удобно ... если бы они были в одном разделе, вы, вероятно, установили бы для строки значение, отличное от 0)

Если вы ненавидите мой решение (поскольку я еще не могу комментировать), пожалуйста, сделайте мне одолжение, просто оставив его на нуле и позвольте лучшему решению выйти на первое место.

Да, еще есть запись о скрытии вашего поиска вверху ... но мой уже был сделан как пользовательская ячейка ... вот эта ссылка .

наслаждайтесь

1
ответ дан 3 December 2019 в 03:51
поделиться