Как перейти к определенному виду панели вкладок с помощью быстрых элементов 3D Touch

#ios #swift #ios12 #3dtouch

#iOS #swift #ios12 #3dtouch

Вопрос:

Я пытаюсь перейти к любому из 3 элементов панели вкладок, которые у меня есть в моей раскадровке, в зависимости от того, какое быстрое действие я выбираю, когда 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. После let myTabBar = self.window?.rootViewController as? UITabBarController . Для чего выполняется myTabBar оценка?

2. Ну, они просто переходят к разным представлениям, связанным с элементами панели вкладок 0,1 и 2

3. Итак, представления переходят правильно? Я не понимаю, в чем проблема

4. На данный момент, когда я нажимаю на приложение 3D Touch и нажимаю на значок быстрого доступа, оно переходит к VC, с которым связано myTabBar?.selectedIndex = x . Однако мне нужно выполнить переход, который переходит к другому ViewController и заканчивается на нем вместо элемента x панели вкладок.

5. Я вижу. Вы хотите, чтобы панель вкладок оставалась видимой после перехода?

Ответ №1:

Поведение, которое вы ищете, объясняется в документации для 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:)

Комментарии:

1. Ну, у меня нет никакого кода…. все, что я пробовал, не сработало. Тем не менее, я использовал .present для представления контроллера представления, но затем контроллер панели вкладок внизу исчез. Мне просто нужно то же самое, но с контроллером панели вкладок, видимым внизу.

2. @YachtSamba Покажите нам, что вы пробовали до сих пор. И вы получите ответ.

3. Я уверен, что смогу помочь вам больше, если вы предоставите строку кода, которую вы использовали, с .present которой это не сработало. @YachtSamba

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

5. Итак, проблема все еще существует?