Представление с таблицей продвинуто на экран, и я хочу, чтобы это прокрутило к определенной строке в таблице, прежде чем экран на самом деле отобразится. Я использую этот код в рамках финала viewcontroller.
NSIndexPath *scrollToPath = [NSIndexPath indexPathForRow:5 inSection:0];
[theTable scrollToRowAtIndexPath:scrollToPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
Когда я поместил его в viewDiDAppear метод, затем это кратко высвечивается от начального положения таблицы (наверху) к строке, которую я хочу. Я не хочу, чтобы это показало исходное положение. Если я поместил его в viewDidLoad или viewWillAppear затем, это отказывает с NSRangeException, по-видимому, потому что таблица еще не настраивается.
Как я заставил бы это прокручивать, не показывая исходное положение?
Спасибо Shaggy и Dying Cactus за то, что указали мне правильное направление. Ответ - загрузить таблицу и прокрутить в viewWillAppear:
-(void)viewWillAppear:(BOOL)animated
{
[theTable reloadData];
NSIndexPath *scrollToPath = [NSIndexPath indexPathForRow:5 inSection:0];
[theTable scrollToRowAtIndexPath:scrollToPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
}
Если я помещу его в viewDidLoad или viewWillAppear, тогда он вылетает с NSRangeException, предположительно потому, что стол еще не накрыт.
Почему стол еще не накрыт? Каким методом вы его настраиваете?
Я только что закончил с этим бороться. Моя добавляла панель поиска в верхнюю часть списка, изначально спрятанную под верхом ... как некоторые из основных приложений. Я действительно собирался задать тот же вопрос!
Я боюсь предлагать это, поскольку кажется, что те, кто предлагает вещи, терпят поражение ... но ... я был удивлен, что не было легкого решения ... так что в итоге я сделал следующее:
Я использую ABTableViewCell (вы можете погуглить) для настраиваемых нарисованных ячеек (красиво и быстро!), И когда меня вызывают, чтобы НАРИСОВАТЬ вторую строку (вы можете сделать это в своих настраиваемых ячейках без ABTableViewCell), я установил его там с один семафор огня:
if ( self.mOnlyOnce == NO && theRow > 1 ) {
self.mOnlyOnce = YES;
[self.mParentTable scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] atScrollPosition:UITableViewScrollPositionTop animated:NO];
}
(выберите нужную строку / раздел, как вам удобно ... если бы они были в одном разделе, вы, вероятно, установили бы для строки значение, отличное от 0)
Если вы ненавидите мой решение (поскольку я еще не могу комментировать), пожалуйста, сделайте мне одолжение, просто оставив его на нуле и позвольте лучшему решению выйти на первое место.
Да, еще есть запись о скрытии вашего поиска вверху ... но мой уже был сделан как пользовательская ячейка ... вот эта ссылка .
наслаждайтесь