2011-09-30 46 views
6

编辑:如何在Monotouch中继承UIApplication?

几年后,事情变得更容易。现在是可以省略 Register()属性,无论在应用程序和应用程序的委托,而使用:

UIApplication.Main(args, typeof(CustomApp), typeof(CustomAppDelegate));


为了能够覆盖UIApplication.SendEvent()我想子类的UIApplication:

public class UIApplicationMain : UIApplication 
{ 
    public UIApplicationMain() : base() 
    { 
    } 

    public override void SendEvent (UIEvent uievent) 
    { 
     base.SendEvent (uievent); 
    } 
} 

在main.cs我用这个代码:

public class Application 
{ 
    static void Main (string[] args) 
    { 
     UIApplication.Main (args, "UIApplicationMain", "AppDelegateBase"); 
    } 
} 

但它失败:

Objective-C exception thrown. Name: 

NSInternalInconsistencyException原因:无法实例化 的UIApplication子类的实例。没有名为UIApplicationMain的类是 加载。

所以我错过了一些属性,我猜。但是什么和在哪里?

回答

10

添加[注册]属性到新类型,如:

[Register ("UIApplicationMain")] 
public class UIApplicationMain : UIApplication { 
    ... 

这将允许主时被执行本机端来实例化正确的类型。

+0

好神!有时候这很容易! – Krumelur