Domanda

nella mia implementazione MainViewController, ho bisogno di accedere alle variabili da due classi diverse. una delle classi è l'AppDelegate e l'altro è il FlipsideViewController. il modo in cui sono disponibili queste era attraverso questo codice:

-(void)someMethod
{
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
FlipsideViewController *viewController = (FlipsideViewController *)[[UIApplication sharedApplication] delegate];

poi ho un allineamento accedo dalla mia applicazione delegato, e alcune variabili d'istanza che restituiscono valori da un'istanza di UISwitch dal flipsideViewController:

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:(NSMutableArray *)appdelegate.originalArray];
for (id element in array)
{
    if ([[element attribute] isEqualToString:@"someAttribute"] && [viewController.switch1 isOn] == YES)
    {
    //preform function
    }
}

Continuo a ricevere il messaggio di errore "- [switch1 MyApplicationAppDelegate]: selettore non riconosciuto inviato ad esempio di terminazione app a causa di eccezione non identificata".

È stato utile?

Soluzione

[[UIApplication sharedApplication] delegato]; restituirà sempre la (Singleton) un'istanza della classe MyApplicationAppDelegate e non si può semplicemente gettarlo ai FlipsideViewController*. per accedere valore flipsidecontroller (ammesso che è memorizzato nel vostro AppDelegate) è possibile definire una proprietà e chiamarlo:

-(void)somemethod{
     MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
     FlipsideViewController *viewController = appDelegate.flipsideController;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top