2012-05-07 2 views
0

У меня есть интерфейс UItableView, который переходит к другому контроллеру представления. Я использую UITapGestureRecognizer, который отходит обратно в tableView. Этот сеанс работает, но я бы хотел, чтобы он снова вернулся к таблицеView в первоначально выбранной строке таблицы. Как это сделать?Перейдите к TableView в выбранной строке ячейки

Edit: Отредактированный код

- (void)viewWillAppear:(BOOL)animated { 

appDelegate = [[UIApplication sharedApplication] delegate]; 
NSLog(@"%@", NSStringFromCGPoint(appDelegate.testCGPoint)); 

[self.tableView setContentOffset:appDelegate.testCGPoint animated:YES]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([segue.identifier isEqualToString:@"ShowDetail"]) { 

    appDelegate.testCGPoint = [self.tableView contentOffset]; 

} 
} 

ответ

1

Вы должны сохранить содержимое смещения табличном в значение.
float tableContentOffset;
Затем сохраните смещение в этом поплавке. Наконец, когда вам нужно установить смещение содержимого вида таблицы,
[self.tableView setContentOffset: CGPointMake (0, tableContentOffset) анимированный: ДА];

+0

Этот код должен находиться в представлении контроллера контроллераWillAppear: method. – eazimmerman

+0

Я использовал CGPoint вместо float, и он не работает для меня. Хотя, я новичок, поэтому я, возможно, делаю здесь несколько ошибок. См. Отредактированный код выше. – mnort9

+0

Пожалуйста, посмотрите на мой второй ответ! Ваша проблема может заключаться в доступе к переменной tableContentOffset! – wayway

0

Итак, в вашем коде вы создали CGPoint. Однако создание существовало в рамках метода prepareForSegue. Таким образом, вы не можете получить доступ к точке вне метода! Решением этого является создание CGPoint в файле заголовка.
CGPoint tableContentOffest;
Затем в вашем методе prepareForSegue все, что вам нужно сделать, это установить значение смещения таблицы. Не создавайте новый CGPoint.
Кроме того, в вашем коде [vc.tableView setContentOffset: _tableContentOffset animated: YES]; вы хотите установить его с помощью [vc.tableView setContentOffset: tableContentOffset анимированный: ДА]; а не _tableContentOffset. Надеюсь, это помогло!

+0

Должен ли я создавать 'CGPoint tableContentOffset' в классе ViewController или что-то в этом роде? Компилятор не распознает переменную в DetailViewController. У меня есть 'CGPoint tableContentOffset', установленный в моем заголовке ViewController @interface {} – mnort9

+0

Хорошо, я вроде как сейчас работаю. Я полностью недопонимал часть «self.tableView ...», и теперь я понимаю, что мне не нужен, если этот код в моем detailViewController. Все установлено в моем основном VC. Однако я не мог заставить его работать, когда я помещал 'CGPoint tableContentOffset в свой заголовочный файл. Похоже, что при повторном представлении он сбрасывался или не настраивался. Вместо этого я установил CGPoint в AppDelegate и назвал его в своем VC. Это похоже на работу, но я не уверен, почему я не смог использовать ваш метод. – mnort9

+0

Также он работает сейчас, но setContentOffset задерживается. Я снова редактировал мой код. Спасибо за вашу помощь. – mnort9

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