Pergunta

Um dos meus controladores de visualização tem vários uiswitches, e quero que outro controlador de exibição possa acessar os valores dos uiswitches para se/e instruções. Como faço isso no Objective-C?

Foi útil?

Solução

Você provavelmente não quer fazer isso. Se você deseja que um segundo ViewController tenha um comportamento diferente com base nos interruptores lançados no primeiro, basta vincular os comutadores aos padrões do usuário, que você pode ler em qualquer lugar do seu aplicativo.

http://icodeblog.com/2008/10/03/iphone-programming-tutororial-softrievrievrie-data-using-nsuserdefaults/

Outras dicas

Essa é uma má idéia, pois criaria uma dependência desnecessária entre os controladores de visualização.

Se você ainda deseja fazer isso, basta passar uma referência do primeiro controlador de exibição com os comutadores para o segundo controlador de exibição. Então, no seu segundo controlador de visualização, basta acessar o Uiswitch's correspondente on propriedade.

No entanto, em vez de seguir esse caminho, sugiro fortemente que você crie uma classe personalizada para manter o estado booleano de cada Uiswitch. Uma instância dessa classe pode ser um singleton ou contida no delegado do aplicativo. Veja isso responda Para como fazer isso com as duas abordagens.

Uma classe personalizada é melhor porque um Uiswitch é apenas uma maneira de representar algumas propriedades em seu modelo de dados. E se amanhã você substituiu o Uiswitch por outro controle sofisticado, o segundo controlador de exibição ainda deve continuar trabalhando. Ambos os controladores de exibição têm uma referência a um objeto dessa classe personalizada. Sempre que houver uma alteração, o primeiro controlador atualiza esse objeto.

A interface da classe pode ser algo assim:

@interface DataValues : NSObject {
    BOOL first;
    BOOL second;
    BOOL third;
}

@property BOOL first;
@property BOOL second;
@property BOOL third;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top