Как я могу связаться с rootViewController на NavigationController из TabBar? - PullRequest
0 голосов
/ 03 апреля 2019

Я пишу приложение для чата.Я хочу получить мои сообщения на заднем плане.Это будет непрерывно.Вот почему я буду использовать executeFetchWithCompletionHandler (если вы знаете лучший способ, вы можете предложить мне).Мой rootViewController - это tabBar .Но я должен использовать этот код для другого контроллера и не могу связаться с ним с AppDelegate .

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    if let tabbarController = window?.rootViewController as? CustomTabBarController{
        if let postController = tabbarController.navigationController?.viewControllers.first as? PostsController{
            print("itsWorking")
        }
    }
}


override func viewDidLoad() {
    super.viewDidLoad()
    //This is my rootViewController

    let layout = UICollectionViewFlowLayout()

    let postsController = PostsController(collectionViewLayout: layout)
    let gezginController = GezginController(collectionViewLayout: layout)

    let homeNavController = UINavigationController(rootViewController: postsController)
    homeNavController.tabBarItem.title = "Home"
    homeNavController.tabBarItem.image = UIImage(named: "home")

    navigationController?.pushViewController(gezginController, animated: true)
    gezginController.tabBarItem.title = "Gezgin"
    gezginController.tabBarItem.image = UIImage(named: "rocket")

    viewControllers = [homeNavController,gezginController]
}

Я хочу связаться с PostController из AppDelegate .Но вы должны знать, что PostController является CollectionView, и я использую макет для этого.Вот почему я не могу использовать как PostController (макет: макет) на AppDelegate .На самом деле я этого не хочу.
Спасибо.

1 Ответ

0 голосов
/ 03 апреля 2019

Вам необходимо получить доступ к общему окну приложения:

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

    if let tabbarController = UIApplication.shared.keyWindow?.rootViewController as? CustomTabBarController,
        let postController = tabbarController.navigationController?.viewControllers.first as? PostsController {
        print("great success")
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...