Necesito para Pasar una cadena a partir de la Aplicación de delegado a mi primera Vista Controlador ,
Puede alguien aparece mi la mejor forma de hacerlo , también traté de Guardar y Recuperar el uso de NS Predeterminados del usuario, pero yo no funcionen de manera adecuada .

  • No es por alguna razón. La razón es muy explícito en que el propósito de la aplicación del delegado para responder a los cambios en el estado de la aplicación. Utilizando como vertedero de datos y constantes es la falta de forma y conduce a una dependencia de un objeto que no es un ciudadano que contribuye en el paradigma MVC.
InformationsquelleAutor Alex | 2013-02-24

4 Comentarios

  1. 28

    Interfaz:

    @interface MyAppDelegate : NSObject  {
      NSString *myString;
    }
    @property (nonatomic, retain) NSString *myString;
    ...
    @end

    y en el .m archivo de la Aplicación Delegado habría que escribir:

    @implementation MyAppDelegate
    @synthesize myString;
        myString = some string;
    @end

    Luego, en viewcontroller.m de archivos se pueden recuperar:

    MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
    someString = appDelegate.myString;  //..to read
    appDelegate.myString = some NSString;     //..to write
    • Este post sólo me salvó el día. Muchas gracias amigo.
    • Su respuesta debe contener escrita en letras mayúsculas: «Mi método es peligrosa y mala práctica, porque se rompe la encapsulación y crea el estado global.»
  2. 18

    Aquí es para Swift:

    Controlador De Vista De

    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate

    Además, si tienes un objeto que debe pasar entre la vista de los controladores (por ejemplo, tuve CloudKit datos que he querido compartir) agregar esto a la Aplicación Delegado:

        /* Function for any view controller to grab the instantiated CloudDataObject */
    func getCloudData() ->CloudData{
        return cloudDataObject
    }

    Luego, de vuelta en el Controlador de Vista de

    var model : CloudData = self.appDelegate.getCloudData()
  3. 14

    Puede acceder a su raíz controlador de vista de como esta de la aplicación delegado:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        MyViewController* mainController = (MyViewController*)  self.window.rootViewController;
        [mainController passData:@"hello"];
    
        return YES;
    }
  4. 2

    El Uso De Swift 4.2:

    Transmitir los Datos desde AppDelegate a ViewController:

    let yourViewController = self.window?.rootViewController as? YourViewController
    yourViewController?.passData(YOUR_DATA) //pass data
    let data = yourViewController?.getData() //access data

    Transmitir los Datos desde ViewController a AppDelegate:

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.passData(YOUR_DATA) //pass data
    let data = appDelegate.getData() //access data

    Añadir a continuación el código a YourViewController o AppDelegate:

    private var data : String? //String? or any type you want
    func getData() -> String? {
        return data
    }
    func passData(_ data : String?) {
        self.data = data
    }

Dejar respuesta

Please enter your comment!
Please enter your name here