Как я могу определить, является ли мой viewcontroller видимым и принимает ли события? - PullRequest
3 голосов
/ 12 мая 2009

У меня есть представление, которое я советую обновить при изменении данных. Но иногда данные изменяются, когда представление не видно. Итак, как я могу определить, что viewcontroller видим и принимает события? Я мог бы добавить логическое значение, которое изменяется в viewWillAppear и viewWillDisappear, но, похоже, должен быть способ непосредственно определять состояние ...

Спасибо, Gary

Ответы [ 3 ]

12 голосов
/ 12 мая 2009

Краткий ответ: Если вы используете UINavigationController, вы можете использовать его visibleViewController, чтобы вам не приходилось отслеживать отдельное логическое значение.

Длинный ответ: Обычно, когда я вызываю reloadData внутри viewWillAppear, это указывает на то, что моему представлению необходимо наблюдать некоторую дополнительную часть моей модели. Проблема с reloadData состоит в том, что он собирается перезагрузить всю вашу таблицу. Часто вам действительно нужно обновить только небольшую часть таблицы. Моя стратегия обычно состоит в том, чтобы обновлять только то, что мне нужно, так, как это происходит, независимо от того, виден ли конкретный вид в это время. Я знаю, что это довольно расплывчатый ответ ... может быть, ваш пример кода поможет мне быть более конкретным ...

1 голос
/ 12 мая 2009

если это таблица, вы можете сделать что-то вроде:

[(UITableView *)[self view] reloadData];

в представлении viewControllerWillAppear. Я не уверен, это то, что вы спрашиваете, но в любом случае.

0 голосов
/ 12 мая 2009

Вы, вероятно, можете проверить свойство окна представления:

- (BOOL)isVisible
{
  return view.window != NULL;
}

Но я думаю, что поддерживать переменную BOOL лучше.

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