É uma prática de programação tipicamente ruim no iOS ter uma visão do controlador de visão aninhada dentro da visão do UIViewController? Digamos, por exemplo, que eu quisesse algum tipo de elemento interativo que respondesse aos toques do usuário, mas ocupasse apenas 25% da tela.
Suponho que eu adicionaria este controlador de visualização aninhado ao meu UIViewController dizendo algo como:
[self.view addSubview: nestedViewController.view];
ios
uiviewcontroller
viewcontroller
Skyler
fonte
fonte
Respostas:
Não, este é geralmente um bom design, ajuda a manter seus controladores de visualização concisos. No entanto, você deve usar o padrão de contenção do controlador de visualização, dê uma olhada na documentação a seguir.
Implementando um controlador de visualização de contêiner
Isso é incrivelmente simples de configurar usando o Interface Builder com Storyboards também, dê uma olhada no Container View na biblioteca de objetos.
Aqui está um exemplo inventado em um Storyboard. Neste exemplo, você teria 4 controladores de visualização, um que contém os 3 contêineres e um para cada contêiner. Quando você apresenta o controlador mais à esquerda que tem todos os contêineres, o Storyboard irá inicializar e incorporar automaticamente os outros 3. Você pode acessar esses controladores de visualização filho através da
childViewControllers
propriedade ou existe um método que você pode substituirprepareForSegue:sender:
e capturar os controladores de visualização de destino a segue prestes a ser chamada. Este também é um bom ponto para passar propriedades para os controladores de visualização filho se algum for necessário.fonte
Eu coloquei este código no controlador de visualização pai. Funciona muito bem para mim.
Obj C
Swift :
Outra opção é usar IB e colocar a visualização do contêiner. UIViewController aparecerá automaticamente (XCode 9 neste caso):
fonte
Aqui está minha solução Swift 3 baseada na resposta do Swift Developers On FB
fonte