Как переопределить функцию UIViewController на IOS?
Я разрабатываю игру с robovm & libgdx на IOS, как переопределить UIViewController.viewWillAppear
?
(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
}
2 ответа
Вы можете переопределить ваш метод, предоставив метод с тем же именем, что и у вашего родительского класса: этот новый метод заменит унаследованное определение. Убедитесь, что ваш метод имеет тот же тип возврата и принимает то же число и тип параметров, что и метод, который вы переопределяете.
Так что просто переопределите -(void)viewWillAppear:(BOOL)animated
в вашем подклассе.
Создание подклассов через использование собственности не рекомендуется в соответствии с Apple Doc.
Как обычно у вас есть два пути:
подкласс вашего viewController и переопределить -(void)viewWillAppear:(BOOL) анимированный
выполнить метод swizzling в категории для UIViewController (см., например, метод Swizzle на устройстве iPhone)