1

iOS で robovm と libgdx を使用してゲームを開発していますが、オーバーライドするにはどうすればよい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];
}
4

2 に答える 2

3

親クラスと同じ名前のメソッドを提供することで、メソッドをオーバーライドできます。その新しいメソッドは、継承された定義を置き換えます。メソッドが同じ戻り値の型を持ち、オーバーライドするメソッドと同じ数と型のパラメーターを受け取ることを確認してください。

したがって-(void)viewWillAppear:(BOOL)animated、サブクラスで を再定義するだけです。

Subclassing through usage of property is discouraged according to Apple Doc.

于 2014-01-26T11:47:59.493 に答える
1

通常、次の 2 つの方法があります。

  • viewController をサブクラス化し、 -(void)viewWillAppear:(BOOL)animated を再定義します

  • UIViewController のカテゴリでメソッド スウィズリングを実行します (たとえば、iPhone デバイスのメソッド スウィズルを参照してください) 。

于 2014-01-26T11:36:51.387 に答える