Uczę się Swift i, w ramach tego procesu, próbuję dowiedzieć się, co dokładnie się tutaj dzieje. Mam niestandardowe przejście, w którym chcę umieścić mój kontroler widoku modalnego, odrzucając przejście. Co było w celu C jako:Podwójny znak zapytania, jak to działa?
UIViewController *sourceViewController = self.sourceViewController;
[sourceViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
self
jest wystąpienie UIStoryboardSegue
. Przetłumaczyłem ten fragment w Swift jako:
self.sourceViewController.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
otrzymuję ten błąd z kompilatora: 'UIViewController'
nie ma elementu o nazwie „dismissViewControllerAnimated”
Teraz by documentation metoda presentingViewController
wygląda następująco:
var presentingViewController: UIViewController? { get }
Z tego co zrozumiałem w dokumentacji języka Swift, ?
należy rozpakować wartość, Jeśli w ogóle. W tym przypadku kontroler widoku. Niewyjaśnione Faktem jest, jeśli mogę umieścić podwójny znak zapytania, kompiluje i działa:
self.sourceViewController.presentingViewController??.dismissViewControllerAnimated(true, completion: nil)
Czy ktoś może mi powiedzieć, co mi brakuje? Co to powinno zrobić?
oczekiwanie z powodu -1. Rozumiem, że może to być pytanie n00b (jak powiedziałem: ** uczę się **), ale myślę, że sformułowałem je dość wyraźnie i nie jest to konkretny przypadek ani nic, co mogłem znaleźć udokumentowane. –
jaka jest deklaracja 'sourceViewController'? –
@GabrielePetronella Zaktualizowałem pytanie. jest własnością UIStoryboardSegue. –