Mam dwa kontrolery widoku, MainVC
i ModalVC
.Dlaczego niewłaściwą praktyką jest odrzucanie viewController'a?
Gdy użytkownik dotknie przycisku na MainVC
, pojawi się kontroler widoku modalnego.
Użytkownik może następnie dotknąć innego przycisku, aby go zamknąć i powrócić do głównego.
Próbowałem tych dwóch metod i obaj osiągnąć to samo: że odrzucenie modalne kontrolera wyświetlania:
//method 1:
// File: ModalVC.swift
//
@IBAction func dismissTapped() {
self.dismissViewControllerAnimated(false, completion: nil);
}
który działa dobrze, jak powiedziałem, ale rozważyć inną metodę: using delegację pozwolić główny sterownik zrobić zwalniających:
// method 2: part A
// File: ModalVC.swift
//
protocol ModalVCDelegate {
func modalVCDismissTapped();
}
...
...
...
var delegat:ModalVCDelegate? = nil;
...
...
@IBAction func dismissTapped() {
delegate.modalVCDismissTapped();
}
i na głównym pliku widok kontroler zwyczaj klasa:
// method 2: part B
// File: MainVC.swift
class MainVC : UIViewController, ModalVCDelegate {
...
...
func modalVCDismissTapped() {
self.dismissViewControllerAnimated(false, completion: nil);
}
}
Ponieważ te dwie metody są potrzebne, czy powinienem się martwić ewentualnym wyciekiem pamięci?
Wszelkie wyjaśnienie pomogłoby
Świetna odpowiedź. Podsumowując w jednym zdaniu: kontroler widoku "modalnego" nie wie, w jaki sposób klienci będą go używać/prezentować, dlatego też musi on być odpowiedzialny za jego odrzucenie. –
Albo w skrócie: ten, kto je stworzył i jest jej właścicielem, powinien także poradzić sobie z jego odrzuceniem. – Eiko