dismissModalViewControllerAnimated сбрасывает contentOffset - PullRequest
7 голосов
/ 18 сентября 2011

У меня проблема с представлением таблицы. При отклонении модального контроллера представления, представленного сверху этого, это всегда прокручивается к вершине. Я пытался наблюдать за изменениями в contentOffset, используя KVO, но тот, который портит мой взгляд, идет за ним.

Начиная с UITableViewController, когда пользователь завершает свою задачу в модальном диалоге, self.tableView.contentOffset есть, я звоню:

[self dismissModalViewControllerAnimated:YES]

Впоследствии, когда вызывается viewWillAppear:(BOOL)animated, self.tableView.contentOffset уже установлен на 0,0.

Это должно происходить? Я могу обойти эту проблему, запомнив положение прокрутки перед представлением модального представления и восстановив его обратно в viewWillAppear после закрытия модального представления. Но это кажется неправильным. Я что-то упустил?

Я обнаружил похожую проблему, описанную в Отклонить изменения модального представления, лежащие в основе UIScrollView .

Ответы [ 2 ]

5 голосов
/ 24 сентября 2011

Вот как я могу обойти эту проблему, чтобы табличное представление сохранило исходную позицию прокрутки.В моем подклассе UITableViewController я добавил:

@property (assign) CGPoint lastScrollPosition;

Затем в реализации я переопределил следующее:

- (void)viewWillAppear:(BOOL)animated
{
    self.tableView.contentOffset = self.lastScrollPosition;
}

- (void)dismissModalViewControllerAnimated:(BOOL)animated
{
    self.lastScrollPosition = self.tableView.contentOffset;
    [super dismissModalViewControllerAnimated:animated];
}

Если вы хотите, чтобы ваша таблица первоначально отображалась с прокруткой доненулевая позиция, как я сделал, не забудьте инициализировать lastScrollPosition в вашем viewDidLoad.

5 голосов
/ 21 сентября 2011

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

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