Como alterar o controlador de exibição de divisão em seu aplicativo ios para um relacionamento controlador de vista de detalhe

Você pode querer excluir o Ver controlador Detalhe

objeto a partir do storyboard iPad para o nosso aplicativo iOS (mas não se esqueça de apagar os arquivos de classe controlador DetailView no navegador de Projeto). Você vai substituir a relação entre o controlador Dividir a visualização ea Visão Detalhada controlador com um para o controlador de tempo.

Video: Revisamos la app iTV Shows 3 para iPhone

O controlador de tempo foi escolhido arbitrariamente aqui - você poderia facilmente ter substituído-lo com qualquer um dos outros controladores de vista. Esta é a visão Detalhe o usuário verá quando o aplicativo é iniciado.

As etapas a seguir mostram como substituir o controlador Detail View.

  1. No Document Outline ou na tela, selecione o controlador de navegação associada com o controlador Visão Detalhada e pressione Excluir.

    Pode ser mais fácil de selecionar o controlador Visão Detalhada no Document Outline, a fim de destacá-lo. Em seguida, você pode provavelmente encontrar o controlador de navegação bem próximo a ela.

    Video: Apoyo: Conexiones vista controlador perdidas en iOS con Swift

  2. Selecione o controlador Visão Detalhada no Document Outline ou lona e pressione Delete também.

    Video: IOS-4_Modelo Vista Controlador

    Você precisará criar um novo relacionamento entre o controlador Dividir a visualização eo controlador do tempo.

  3. Selecione o controlador Dividir a visualização no storyboard ou Document Outline, Controle e arraste para o controlador do tempo, e, em seguida, selecione Relacionamento - Detail View Controller a partir do menu pop-up que aparece.

    Video: #SegredosDoInstagram: ME DEU UNFOLLOW?



    O resultado final do que foi adicionado ao storyboard até agora deve ser semelhante a este. As coisas foram reorganizados um pouco por uma questão de clareza. Certifique-se de que tudo é nomeado como você reorganizar os controladores de vista. Então você pode zoom in e out para ver o que faz o arranjo mais lógico.

Você também vai ter que fazer algumas mudanças em aplicação: didFinishLaunchingWithOptions:. Adicione o código em negrito para esse método em AppDelegate.m.

- applicationdidFinishLaunchingWithOptions (UIApplication *):: (BOOL) aplicação launchOptions {(NSDictionary *) if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {UISplitViewController * splitViewController = (UISplitViewController *) self.window.rootViewController-if ([splitViewController.viewControllers [1]  isKindOfClass: [classe UINavigationController]]) {UINavigationController * detailNavigationController = [splitViewController.viewControllerslastObject] -splitViewController.delegate = (id) navigationController.topViewController-}outro splitViewController.delegate =  [SplitViewController.viewControllers LastObject] -... o resto do método}

A mudança que você faz aqui está em como você começa o controlador Visão Detalhada que você vai atribuir como o delegado controlador Dividir a visualização. O controlador Dividir a visualização administra dois controladores de vista, com o último em sua lista de controladores correspondentes para o que é exibido na visualização detalhada.

Você verifica o último controlador de vista para ver se é um controlador de navegação (que contém o controlador Detail View), enviando-o isKindOfClass: mensagem. Este método retorna um booleano que indica se é um UINavigationController.

se ([splitViewController.viewControllers [1] isKindOfClass: [classe UINavigationController]]) {UINavigationController * detailNavigationController = [splitViewController.viewControllers LastObject] -splitViewController.delegate = (id) detailNavigationController.topViewController-}

Se for um controlador de navegação, você precisa encontrar o seu controlador de exibição (ele é o único que tenha adoptado o SplitViewControllerDelegate protocolo, implementado os métodos de protocolo, e pode se tornar delegado Ver controlador do Split), que você obtém através do acesso ao controlador de navegação de topViewController propriedade. (Ele aponta para o primeiro e único controlador de vista sobre a sua stack.) Então você vai atribuí-lo como delegado.

Se for um controlador de vista, em vez de um controlador de navegação (que será porque você acabou de fazer o controlador do tempo o controlador Detail View, e não tem controlador de navegação), que acabou de atribuir esse controlador de vista como o delegado.

else splitViewController.delegate = [splitViewController.viewControllers LastObject] -

Se você construir e executar o seu projeto agora, parece que você tomou um passo backward- tudo que você vê é uma tela em branco - na orientação retrato não menos (a menos que você manteve o controlador Test Drive como a Visão Detalhada inicial controlador).


Publicações relacionadas