Как перейти к конкретному виду панели вкладок с помощью быстрых элементов 3D Touch - PullRequest
0 голосов
/ 21 апреля 2019

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

Редактировать: у меня есть это, чтобы перейти к каждой отдельной панели вкладок.

Теперь мне нужно активировать переход в каждом представлении, и вот код, который я использую:

    func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
    let myTabBar = self.window?.rootViewController as? UITabBarController
    let NavigationController = UINavigationController.self
    if shortcutItem.type == "com.LukeB.Quick-Actions-Test.Three" {
        myTabBar?.selectedIndex = 2
        //Need to go to the segue with identifier SegueThree
    }
    if shortcutItem.type == "com.LukeB.Quick-Actions-Test.Two" {
        myTabBar?.selectedIndex = 1
        //Need to go to the segue with identifier SegueThree

    }
    if shortcutItem.type == "com.LukeB.Quick-Actions-Test.One" {
        myTabBar?.selectedIndex = 0
        //Need to go to the segue with identifier SegueOne


    }
}

1 Ответ

2 голосов
/ 21 апреля 2019

Требуемое поведение объясняется в документации к быстрому обработчику UIApplicationDelegate здесь . Подводя итог, вам нужно проверить параметры запуска в willFinishLaunching или didFinishLaunching, а затем решить, что делать в зависимости от того, что вы видите.

Проблема, с которой вы столкнулись, может быть вызвана тем, как вы настраиваете представление, которое впервые отображается в вашем приложении. Возможно, вы устанавливаете ViewController на тот, который вложен в контроллер представления вкладок, а не устанавливаете его в качестве контроллера вкладок, а затем сообщаете контроллеру вкладок, какие из его представлений отображать.

Это просто предположение, вам нужно поделиться большим кодом, чтобы получить более конкретный ответ.

Обновление: Теперь, когда вы решили проблему с правильным отображением вкладок, вы хотите, чтобы это представление отображало другое представление поверх него.

Документация для UITabBarController дает некоторые советы о том, как это сделать, в разделе «Представления контроллера панели вкладок». Один из способов сделать то, что вы пытаетесь сделать, - это настроить UIViewControllers таким образом, чтобы каждая вкладка имела контроллер навигации в качестве корня. Таким образом, вы можете вставить любой желаемый контроллер в представление так, чтобы пользователь мог его распознать.


     UINavigationController - Controller 1 -> push new controller
    /
TBC - UINavigationController - Controller 2 -> push new controller
    \
     UINavigationController - Controller 3 -> push new controller

В качестве альтернативы, если у вас есть пользовательский переход, который вы хотите использовать, вы можете продолжить то, что вы делаете с myTabBar?.selectedViewController.performSegue(withIdentifier:sender:)

...