Как переопределить функцию 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)

Другие вопросы по тегам