Pergunta

na minha implementação MainViewController, preciso acessar variáveis ​​de duas classes diferentes.uma das classes é AppDelegate e a outra é FlipsideViewController.a forma como acessei foi através deste código:

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

então eu tenho uma matriz que acesso do delegado do meu aplicativo e algumas variáveis ​​​​de instância que retornam valores de uma instância de UISwitch do 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 recebendo a mensagem de erro "-[MyApplicationAppDelegate switch1]:seletor não reconhecido enviado para instância.encerrando o aplicativo devido a uma exceção não detectada"

Foi útil?

Solução

[[UIApplication sharedApplication] delegado];sempre retornará a instância (singleton) de MyApplicationAppDelegate classe e você não pode simplesmente lançá-lo para FlipsideViewController*.para acessar o valor do flipsidecontroller (supondo que ele esteja armazenado em seu appdelegate), você pode definir uma propriedade e chamá-la:

-(void)somemethod{
     MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
     FlipsideViewController *viewController = appDelegate.flipsideController;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top