2011-09-30 11 views
6

MODIFICA:Come sottoclasse l'applicazione UIA in Monotouch?

Un paio di anni più tardi, le cose sono più facili. E 'ora possibile omettere le Register() attributi, sia sulla domanda e il delegato app e di utilizzare invece:

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


Al fine di essere in grado di eseguire l'override UIApplication.SendEvent() Voglio UIApplication sottoclasse:

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

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

Negli main.cs io uso questo codice:

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

ma non riesce con:

Objective-C exception thrown. Name: 

NSInternalInconsistencyException Motivo: Impossibile istanziare l'istanza sottoclasse UIApplication. Nessuna classe denominata UIApplicationMain è stata caricata .

Quindi mi mancano alcuni attributi credo. Ma cosa e dove?

risposta

10

Aggiungi un [Registra] attributo per il nuovo tipo, come:

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

che permetterà il lato nativo per istanziare il giusto tipo quando principale viene eseguito.

+0

Buon Dio! Può essere così facile a volte! – Krumelur