Alguém sabe para que o novo ícone Exit é usado ao editar storyboards usando o Xcode 4.5?


100

Clicar com o botão direito no ícone Sair exibe uma janela vazia. Não é possível arrastar com a tecla Ctrl pressionada uma conexão com nenhum elemento IB ou arquivos de origem correspondentes. Os documentos não dão amor. Não aparece em arquivos nib, apenas storyboards. Minha suposição é que é um corolário de segues, mas não vejo nenhum método novo para fazer o backup. Qualquer um?



Possível duplicata do Storyboard
— Tamás Sengel

Respostas:


104

Há muitas informações no vídeo WWDC "Sessão 407 - Adotando Storyboards em seu aplicativo".

Digamos que você tenha dois controladores de visualização vinculados por uma segue. Implemente a seguinte ação de saída no primeiro controlador de visualização:

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

Em seguida, na cena do Storyboard para o segundo controlador de visualização, pressione Ctrl e arraste de um elemento da IU, como um botão, para o ícone de saída na parte inferior deste controlador de visualização. A done:ação que você adicionou ao código do primeiro controlador aparecerá como uma opção. Agora, ativar o botão que você arrastou com a tecla Ctrl pressionada até o ícone de saída retornará ao primeiro controlador de visualização e manterá seu estado original (ou seja, elementos da IU, como entrada de texto supostamente ainda intactos).


3
Na verdade, ele volta para a mesma instância exata do controlador de visualização (e suas visualizações).
— Jon Hess

Obrigado, eu estava lendo isso apenas para saber do que se tratava a "Saída Verde", apenas para descobrir que resolveu um problema para mim. Eu tinha 2 controladores de visualização separados por um controlador TabBar e um controlador de navegação, e "Pop" não funcionou para retornar. Demorou 2 minutos e tudo funcionou como você disse! OBRIGADO!
— user589642

Como posso invocar o método de ação no Donebotão na classe de visão B antes de sair de volta para a visão A?
— especialista em

Se você assistir ao vídeo da WWDC, pode pular para 37:15 para ver a parte sobre "continuações para descontrair"
— moliveira

220

Tive dificuldade em seguir a resposta aceita, então aqui estão mais detalhes.

Dada a foto abaixo no controlador de visualização C, você pode "sair" de volta para qualquer controlador de visualização no caminho segue.

insira a descrição da imagem aqui

ViewController A você pode escrever:

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController B, você pode escrever:

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController C você controla o arrasto do botão "voltar" para a opção de saída verde e seleciona voltar: ViewController C você controla o arrasto do botão "concluído" para a opção de saída verde e seleciona concluído: insira a descrição da imagem aqui

Nota: Mesmo que os métodos estão em outros controladores de vista que eles aparecem para o ViewController C saída 's. O controle de arrastar e selecionar um método define para qual ViewController se desenrolar.


2
Mais uma nota: às vezes, o botão de saída verde não está ativo mesmo que todas as etapas sejam concluídas. Nesse caso, a reabertura do storyboard (ou projeto xcode) faz com que ele funcione conforme o esperado.
— zxcat

3
Outro problema que tive foi que não coloquei a assinatura do método segue de desenrolamento no meu arquivo .h ou extensão de classe. Depois de adicioná-lo, a janela de abertura apareceu no pop-up.
— Steve Moser

2
+ Infinity paraEven though the methods are on other view controllers they show up for the ViewController C's exit.
— Papai Noel

15

Além da resposta de Eric, aqui está como funciona com:

A função que você adiciona ao controlador de destino se parece com:

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.