【问题标题】:how to override UIViewController's function on ios?如何在ios上覆盖UIViewController的功能?
【发布时间】:2014-01-26 10:53:15
【问题描述】:

我正在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];
}

【问题讨论】:

    标签: ios libgdx robovm


    【解决方案1】:

    您可以通过提供与父类同名的方法来覆盖您的方法:该新方法将替换继承的定义。确保您的方法具有与您要覆盖的方法相同的返回类型并采用相同数量和类型的参数。

    所以只需在您的子类中重新定义 -(void)viewWillAppear:(BOOL)animated

    根据Apple Doc,不鼓励使用属性进行子类化。

    【讨论】:

      【解决方案2】:

      通常你有两种方法:

      • 子类化您的 viewController 并重新定义 -(void)viewWillAppear:(BOOL)animated

      • 在 UIViewController 的类别中执行方法调配(例如参见 Method Swizzle on iPhone device

      【讨论】:

      • 还是谢谢大家,不过我是在 Robovm 上用 Java 开发游戏的。
      猜你喜欢
      • 1970-01-01
      • 2018-05-03
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多