Conectar Controladores
Usando a tag storyboard
para ligar uma série de UIViewControllers
juntos, é uma questão de arrastar e soltar objetos no storyboard
.
Primeiro, a exibição inicial do controlador é adicionado ao Controlador de Navegação
O seguinte GIF animado mostra como exibição de três controladores pode ser colocado em uma linha, com um simples segue
adicionado entre cada um, definido como um show segue o que significa que cada controlador de visualização de slides em.
Eu nomeei o seguem moveToSecond e moveToThird entre o primeiro e o segundo modo de exibição controladores e a segunda e terceira vista controladores (respectivamente).
adicionar botões com acções
é necessário adicionar um botão para cada controlador de visualização (a fim de escrever código para arrancar o segue
).
Este é um processo relativamente fácil de arrastar e largar a operação (apenas o primeiro botão é mostrado aqui)
a Movimentação de Dados: A passagem de Dados Através de uma Retribuição
é possível a passagem de dados de um controlador de visualização para outro por meio de uma segue
.
mudar para o primeiro controlador de visualização dá-nos a seguinte, com a parte importante que é comentada (FirstViewController é a classe de relacionados para o primeiro controlador de visualização, como mostra o gif animado acima), e o botão de ação é expresso.
Vamos usar isso para atender e passar informações de um controlador de visualização para outro usando performSegue(withIdentifier: String, sender: Any?)
ferramentas é o botão de ação.
Nós atualizamos a ação para chamar o movetosegundo segue (como indicado acima). Neste caso, não precisamos saber o remetente, então isso pode ser nulo, mas precisamos ter certeza absoluta de que o segue
string está corretamente identificado. Todos sabemos que combinar cordas é uma má ideia, mas para evitá-lo você pode ver o adorável artigo escrito que eu fiz anteriormente.
mas pressionando sem correspondência de cordas, nós usamos prepare(for:sender:)
para, bem, preparar para a continuidade. O método acabado parece-se com o seguinte (que é adicionado ao nosso primeiro controlador de vista):
Agora, isso depende de nós ter uma dataSent
propriedade no controlador de visualização estamos visitando.
assim podemos colocar isso no bastante atrativamente chamado SecondViewController
, embora seja apenas uma propriedade simples colocada dentro da classe de controle de visualização.Qual é a melhor forma de os Mostrar? Quero um GIF animado.
a Movimentação de Dados: Passar os dados de volta através de um delegado
e se você quiser mover os dados de volta do controlador de segunda vista, nós podemos querer passar os dados de volta para o primeiro controlador de vista. Uma forma de o fazer é usar a delegação.
Para fazer isso, montamos um delegado
em seguida, precisamos conformar-se com o delegado de FirstViewController
com o que acabamos de imprimir a mensagem.
dentro de SecondViewController
acrescentar o delegado como uma propriedade, que eu, então, escolhida para chamar durante o func viewWillDisappear(_ animated: Bool)
assim, sempre que a vista é substituído, a mensagem é enviado
Há um par de coisas lá, isso aqui é um animated gif
Unwind Segue
The unwind segue gives us something rather more.
To traverse from First View Controller
to Second View Controller
to Third View Controller
is a stepwise process. However, an unwind segue gives the ability to move from Third View Controller
to First View Controller
, skipping the Second View Controller
entirely.
Passo na descontrair segue!
FirstViewController
não precisa ser uma func unwindToFirst(_ unwindSegue: UIStoryboardSegue)
função que será executada quando o storyboard move-se de volta para o FirstViewController
.
The storyboard section of this by control — dragging from a button to the top-right hand button “exit”
So difficult to show! Aqui está o GIF animado
Também é possível passar dados através da transição de um modo semelhante ao descrito acima.
Crie o seu próprio personalizado, Segue
Uma razão para criar o seu próprio segue
é para criar uma bela animação quando uma vista é apresentado.a minha animação? Um Fade Out (representando o nosso desvanecimento da vida, amor).
A segue que criamos é uma Segue personalizada (em vez de a seguir mostrada acima).
Dentro deste Segue Precisamos para selecionar a Classe de transição, e definir um identificador. Aqui chamamos-lhe customSegue
.
Este, em seguida, usa um novo arquivo para cobrir o novoMyCustomSegue
classe; eu, ao invés criativamente chamado este ficheiro MyCustomSegue.swift, que herda de UIStoryboardSegue
.
a ação da segue será, bem, realizada na função executar com é sobreposta. override func perform()
Vamos perform()
passo-a-passo. Para ganhar controle sobre a transição, definimos MyCustomSegue
para ser o transitioningDelegate
. No topo da classe, há um mantidas referência private var selfRetainer: MyCustomerSegue? = nil
o que é necessário UIKit
não mantém ocorrências de UIStoryboardSegue
então, uma forte referência é criada para o mesmo. O estilo de apresentação é definido para .fullScreen
para substituir o controlador de visualização original.
ThetransitioningDelegate
provides methods that work for the presentation and dismissal. Vamos apresentar duas classes, Presenter
e Dismisser
para lidar com aqueles, que adota UIViewControllerAnimatedTransitioning
e NSObject
.
O apresentador é muito fácil escrever.
Aqui temos o Apresentador cumpre o protocolo de ter as funções func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
e func animateTransition(using transitionContext: UIViewControllerContextTransitioning)
.
o primeiro destes é simplesmente um tempo, 1.5 é um bom período de tempo para esta animação de desvanecimento.
A letra é a animação; por isso, o desvanecimento será para o controlador de visualização que apresenta de translúcida para opaca (ou seja, 0, 0 a 1.0).o que é isso? Queres um parque infantil com tudo incluído? Vou dar-lhe isso, então:
melhor será um Repo inteiro com o trabalho nele. Ok, isso está no fundo desta página.
conclusão
As Segues não são tão fáceis como se possa pensar, mas permitem-lhe animar a viagem do utilizador através da aplicação e enviar os dados.quem não quereria isso?
espero que este guia lhe tenha dado um empurrão na direcção certa para esta (embora divertida) forma de transferir o seu utilizador e os seus dados em torno de uma aplicação.