#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
которой это не сработало. @YachtSamba4. Хорошо, теперь я получил доступ к другому значку панели вкладок, но мне нужно выполнить переход, связанный с этим представлением. Я добавлю свой код.
5. Итак, проблема все еще существует?