Содержащее приложение вылетает при открытии из расширения Today в swift 4 - PullRequest
0 голосов
/ 09 июня 2018

У меня есть быстрое приложение, для которого у меня есть расширение сегодня, у него есть кнопка, которая открывает содержащее приложение.

кнопка прекрасно открывает приложение, когда приложение находится в недавнем списке, но падает, когдаприложение удалено из недавнего списка.

тоже нет аварийных журналов

это мой код на делегате приложения:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    var mainViewController : MainViewController!
    mainViewController = UIApplication.shared.keyWindow?.rootViewController?.childViewControllers[1].childViewControllers[0] as! MainViewController

    if url.scheme == "open"
    {
        switch url.host
        {
        case "1"?:
            mainViewController.isTaxi = true
            break
        case "2"?:
           mainViewController.isPfp = true
            break
        case "3"?:
           mainViewController.isDarbi = true
            break
        default:
            break
        }
    }
    return true
}

вот как я открываюсь в главном VC:

var isTaxi : Bool? {
    didSet{
        if UserDefaults.getUser() != nil {
            self.taxiRegViewController.show()
        } else {
            self.taxiNotRegViewController.show()
        }
    }
}

здесь я запускаю событие касания в добавочном номере:

@IBAction func bookTaxiTapped(_ sender: UIButton) {
    if let url = URL(string: "open://\(sender.tag)")
    {
        self.extensionContext?.open(url, completionHandler: nil)
    }
}

1 Ответ

0 голосов
/ 09 июня 2018

Я решил свою проблему, изменив метод делегата приложения следующим образом:

Фактическая проблема была: у нас был SWRevealViewController, который должен быть инициирован перед вызовом

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    var mainViewController : MainViewController!
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyBoard = UIStoryboard(name: "Main", bundle: nil)

    let viewController = storyBoard.instantiateViewController(withIdentifier: "swRevealController") as! SWRevealViewController
    mainViewController = storyBoard.instantiateViewController(withIdentifier: "mainView") as! MainViewController
    self.window?.rootViewController = viewController
    self.window?.makeKeyAndVisible()

    viewController.setFront(mainViewController, animated: true)


    if url.scheme == "open"
    {
        switch url.host
        {
        case "1"?:
            mainViewController.isTaxi = true
            break
        case "2"?:
           mainViewController.isPfp = true
            break
        case "3"?:
           mainViewController.isDarbi = true
            break
        default:
            break
        }
    }
    return true
}
другого контроллера представления
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...