Получение белого экрана во второй раз после присутствия ВК поверх текущего. Не получить это в первый раз - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь показать мой сеанс vc после того, как я получу значения (я использую центр уведомлений) из моего не UIViewController класса (мой интерфейсный интерфейс, который является из моего класса какао) в мой сеанс vc.

Сейчасв первый раз мой сеанс vc правильно отображается на моем текущем верхнем vc.Но после второго раза я получаю только белый экран.Но значения api-вызовов, которые есть в моем сеансе vc, все еще работают. Я могу видеть в своей консоли.

TopView.swift:

import UIKit

public extension UIWindow {
    public var visibleViewController: UIViewController? {
        return UIWindow.getVisibleViewControllerFrom(vc: self.rootViewController)
    }

    public static func getVisibleViewControllerFrom(vc: UIViewController?) -> UIViewController? {
        if let nc = vc as? UINavigationController {
            return UIWindow.getVisibleViewControllerFrom(vc: nc.visibleViewController)
        } else if let tc = vc as? UITabBarController {
            return UIWindow.getVisibleViewControllerFrom(vc: tc.selectedViewController)
        } else {
            if let pvc = vc?.presentedViewController {
                return UIWindow.getVisibleViewControllerFrom(vc: pvc)
            } else {
                return vc
            }
        }
    }
}

func getTopViewController() -> UIViewController? {
    let appDelegate = UIApplication.shared.delegate
    if let window = appDelegate!.window {
        return window?.visibleViewController
    }
    return nil
}

Myделегат приложения:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

 NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.onOver(notification:)), name: NSNotification.Name(rawValue: "openBoard"), object: nil);


}

@objc func onGameOver(notification: NSNotification)
    {
   if let score = notification.object as? NSDictionary
        {


                    let storyBoard = UIStoryboard.init(name: "Trai", bundle: nil);
                    if let sessionvc = storyBoard.instantiateViewController(withIdentifier:
                        "sessionvc") as? sessionvc{


                        if let topVC = getTopViewController() {
                            //topVC.dismiss(animated: true, completion: nil)
                            topVC.present(sessionvc, animated: true)
                        }

                }

        }
    }

Впервые я не получаю его.Но со второго раза, если я пытаюсь сделать то же самое, я получаю белый экран, но все же мои данные sessionvc и все загружается в моей консоли.Любая помощь в этом

1 Ответ

0 голосов
/ 03 июля 2019

Может быть, его поздний повтор.Дайте мне знать, если это поможет вам.

Измените свой метод @objc func onGameOver(notification: NSNotification)

if let topVC = getTopViewController() {

  let Yourvc = YourViewController()
  topVC = Yourvc
  topVC.present(topVC, animated: true)

 }

Иначе вы можете попробовать этот метод:

if var topVC = getTopViewController() {

  self.window?.rootViewController = topVC
  topVC.present(scoreBoardController, animated: true)

}

Попробуйте и дайте мнезнать, если это работает.

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