Sto imparando Swift e, come parte del processo, cercando di capire cosa sta succedendo esattamente qui. Ho un seguito personalizzato in cui voglio posizionare la mia transizione modale per la liquidazione del controller di visualizzazione. Quello che era in Objective-C come:Doppio punto interrogativo, come funziona?
UIViewController *sourceViewController = self.sourceViewController;
[sourceViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
self
è un'istanza di UIStoryboardSegue
. ho tradotto questo frammento a Swift come:
self.sourceViewController.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
ottenere questo errore del compilatore: '? UIViewController'
non ha un membro denominato 'dismissViewControllerAnimated'
Ora, by documentation, il metodo presentingViewController
assomiglia a questo:
var presentingViewController: UIViewController? { get }
Da quello che ho capito dalla documentazione lingua Swift, ?
dovrebbe scartare il valore, se ce ne sono In questo caso il controller della vista. Il fatto inspiegabile è: se ho messo un punto doppia domanda, compila e funziona:
self.sourceViewController.presentingViewController??.dismissViewControllerAnimated(true, completion: nil)
Qualcuno può dirmi che cosa mi manca? Cosa dovrebbe fare?
in attesa del motivo del -1. Capisco che potrebbe essere una domanda n00b (come ho detto: sto ** imparando **), ma penso di averlo formulato abbastanza chiaramente e non si tratta di un caso specifico né di qualcosa che potrei trovare documentato. –
qual è la dichiarazione di 'sourceViewController'? –
@GabrielePetronella Ho aggiornato la domanda. è una proprietà di un UIStoryboardSegue. –