Как запустить некоторый код, когда UIView загружен на iOS? - PullRequest
0 голосов
/ 20 июня 2011

Я хочу запустить некоторый код, когда любой UIView загружен из ресурсов.

Как я могу это сделать, не изменяя реализацию каждого подкласса UIView?

Примечание: создание подклассов UIView не вариант.

Ответы [ 4 ]

1 голос
/ 20 июня 2011

Поскольку мы говорим о ресурсах и NIB неявно, я могу вспомнить только два метода, в которых вы бы загрузили представление - UIViewController 'initWithNibName:bundle или loadNibNamed:owner:options:, хотя могут быть некоторые частные методы, которые мыпредоставил доступ к.

Так что вы можете думать о переопределении поведения там.Вы можете создать пользовательский подкласс UIViewController, который будет родительским для всех ваших контроллеров представления и подкласса NSBundle для переопределения loadNibNamed:owner:options:.Но это может зависеть от того, какую задачу вы хотите выполнить.

1 голос
/ 20 июня 2011

Можно подумать о создании UIView, который будет базовым классом представления для всех ваших UIView, как предложено @ gsempe , и реализовать метод willMoveToSuperview:.

Из документации.

Сообщает, что его суперпредставление собирается изменить к указанному SuperView.

- (void)willMoveToSuperview:(UIView *)newSuperview;
- (void)willMoveToWindow:(UIWindow *)newWindow;
1 голос
/ 20 июня 2011

Вы должны создать подкласс UIView, а затем использовать свой подкласс для всех остальных UIviews

0 голосов
/ 20 июня 2011

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

Таким образом, подход действительно зависит от вашего варианта использования.

...