2011-09-30 48 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