2017-05-07 12 views

Odpowiedz

3

Masz dwie opcje, druga jest lepsza z założenia.

Pierwsza opcja (co chcesz)

nie wiem struktury Państwa zdaniem kontrolerów, więc pozwól, że masz kontroler widoku głównego, można dostać od AppDelegate poprzez:

rootVC = self.window?.rootViewController 

A jeśli chcesz uzyskać przedstawione kontroler widok od kontrolera widoku głównego (jak wielu aplikacjach, przedstawiony widok kontroler jest kontrolerem bar tab):

guard let tabBarController = rootVC.presentedViewController as? TabBarController else { 
     return 
} 

Gdy pojawi się kontroler pasku kart można znaleźć kontroler widoku w tablicy widoku kontrolerów:

tabBarController.viewControllers 

Zasadniczo, co próbuję powiedzieć, to trzeba przeskoczyć przez Pana zdaniem kontrolerów rozruchu od korzenia, aby dostać się do kontrolera, który chcesz, a następnie pobrać zmienną z tego miejsca. Jest to bardzo podatne na błędy i na ogół niezalecane.

Druga opcja (lepsza praktyka):

Mają swój rejestr widok kontrolera jako obserwator powiadomienia UIApplicationWillResignActiveNotification. Pozwoli ci to zrobić, co chcesz, z kontrolera widoku, gdy aplikacja ma zamiar wprowadzić tło.

Powiązane problemy