2011-09-30 18 views
6

EDITAR:Cómo subclase UIApplication en Monotouch?

Un par de años después, las cosas son más fáciles. Ahora es posible omitir los Register() atributos, tanto en la aplicación y el delegado de la aplicación y en su lugar usar:

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


el fin de ser capaz de anular UIApplication.SendEvent() Quiero UIApplication subclase:

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

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

En los main.cs utilizo este código:

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

pero fracasa con:

Objective-C exception thrown. Name: 

NSInternalInconsistencyException Razón: No se puede crear una instancia de la instancia subclase UIApplication. Ninguna clase llamada UIApplicationMain es cargada.

Me faltan algunos atributos, supongo. ¿Pero qué y dónde?

Respuesta

10

Añadir un [Registrar] atributo para el nuevo tipo, como:

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

que permitirá al lado nativo a una instancia del tipo correcto cuando es ejecutado principal.

+0

¡Dios mío! ¡Puede ser tan fácil a veces! – Krumelur

Cuestiones relacionadas