mam szybki protokół, który zawiera jedną właściwość:Swift rzutowanie w dół i protokołów zmienne
protocol WireframeProtocol: class
{
var rootViewController: UIViewController { get }
}
Mam następnie klasy, która implementuje ten protokół jako takie:
class MenuWireframe : WireframeProtocol
{
let rootViewController: UIViewController
init()
{
self.rootViewController = MenuViewController(nibName: "MenuViewController", bundle: nil)
(self.rootViewController as! MenuViewController).presenter = MenuPresenter(interactor: MenuInteractor())
}
}
W mojej klasie Szkielet zmienna jest faktycznie typu MenuViewController, ale musi zostać zadeklarowany jako UIViewController w celu potwierdzenia protokołu. Muszę użyć (self.rootViewController jako! MenuViewController), aby obniżyć go do odpowiedniej klasy, chcę, aby móc uzyskać dostęp do jego właściwości. W moim prostym przykładzie powyżej wszystko jest w porządku, ale nie jest czytelne, szczególnie w bardziej złożonych sytuacjach. Czy istnieje lepszy sposób deklarowania zmiennej protokołu?
Wielkie dzięki!
Ponieważ używasz Viper, można/należy zadeklarować swój rootviewcontroller jako protokół (protokół View) i określić słabe własności tam, który będzie prezenter . –
Cześć Daniel, to prawda, ale ta sprawa ma inny cel. Chciałbym mieć protokół, w którym każdy szkielet jest zgodny z tym, który udostępnia kontroler UIViewController, którego mogę używać do celów nawigacyjnych. Przypuszczam, że mogę nadal używać tego protokołu widoku, jeśli protokół dotyczy tylko UIViewControllers ... mmm Sprawdzę to i skontaktuję się z Tobą – bennythemink
@bennythemink czy sprawdziłeś moją odpowiedź? –