2011-12-14 4 views
77

mam ręcznie wywoływanie segue (ustawiony jako blokami), aby wyświetlić formularz logowania w Xcode 4.2 używając obrazkowa z następującej linii kodu:Zamykanie widoku wyświetlanego przez modalnego segue

[self performSegueWithIdentifier:@"LoginSegue" sender:nil]; 

I Prawdopodobnie brakuje czegoś naprawdę prostego, jednak nie mogę znaleźć sposobu na programowe zamknięcie widoku logowania i powrót do poprzedniego widoku.

Widok jest częścią kontrolera widoku nawigacji, więc ustawienie typu przejścia na "push" pozwala mi użyć przycisku wstecz, aby odesłać mnie do poprzedniego ekranu, ale w trybie "modalnym" nie jestem całkowicie pewny, jak to osiągnąć (po naciśnięciu przycisku, na przykład)

Każda pomoc byłaby mile widziana.

+0

Xcode jest tylko IDE, chory edytuj tę –

Odpowiedz

172

Jeśli twoim celem wdrożenia jest iOS 5.0 lub nowszy, należy tę wiadomość:

[self dismissViewControllerAnimated:YES completion:nil]; 

albo w SWIFT:

self.dismissViewControllerAnimated(true, completion: nil) 

Jeśli twoim celem wdrożenia jest starszy, użyj tego komunikatu (przestarzałe):

[self dismissModalViewControllerAnimated:YES]; 
+0

Dzięki Rob, to próbowałem już i nie robi” wydaje się, że cokolwiek robi. Czy to ma jakieś specjalne warunki? – Nick

+1

Zrobiłem trywialny przypadek testowy z dwoma wirtualnymi bohaterami w storybooku. Początkowe VC ma przycisk "Modal" z modalnym przejściem do drugiego VC. Drugi VC ma przycisk "Odrzuć" podłączony do metody, która wykonuje polecenie "[self dismissModalViewControllerAnimated: YES]". Działa zgodnie z oczekiwaniami. Nie znam żadnych specjalnych warunków. –

+0

Chcę tylko podkreślić, że rozwiązałem ten problem. Będąc nowością w scenorysach, nie ustawiłem typu segue na modalne jedno wystąpienie, więc był to błąd użytkownika! Dzięki. – Nick

4

Poniższa powinien działać dobrze ...

[self dismissModalViewControllerAnimated:YES]; 

Robię dokładnie to ze stroną logowania w moim latest tutorial here, bez problemów.

+1

Teraz przestarzałe w iOS7: Użyj metody dismissViewControllerAnimated: complete: zamiast. –

13

[self dismissViewControllerAnimated:YES completion:nil]; to nowy sposób na iOS5

3

Poniższy kod działa w szybkim 3:

self.dismiss(animated: true, completion: nil)