Эта ссылка должна дать вам некоторую подсказку. Назначение stdafx.h
Строки, определенные до #include "stdafx.h"
, игнорируются компилятором. Поэтому, если вы хотите включить эти файлы, вам необходимо включить их после #include "stdafx.h".
Надеюсь, что это понятно.
Если я вас правильно понимаю, вы хотите запустить свое приложение в состоянии, когда оно находится в контроллере целевого представления. Этот ответ не применяется, если приложение уже запущено.
Прежде всего, вам нужно создать экземпляр контроллера панели вкладок. Это вернет всю иерархию, которую вы создали в файле раскадровки. Свойство viewControllers
вашего UITabBarController
будет содержать три UINavigationController
, которые вы настроили для своих разных вкладок. Первый навигационный контроллер - тот, который связан с вашей домашней вкладкой. Затем вы можете манипулировать свойством viewControllers
объекта UINavigationController
, чтобы изменить начальный стек контроллеров представления. UINavigationController
всегда будет отображать последний, поэтому в этом примере thirdVc
- это тот, который показан на домашней вкладке.
func setupAppFromDeeplink() {
let tabBarController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "tabBar") as! UITabBarController
let homeNavigationController = tabBarController.viewControllers?.first as! UINavigationController
let firstVc = UIViewController()
let secondVc = UIViewController()
let thirdVc = UIViewController()
homeNavigationController.viewControllers = [firstVc, secondVc, thirdVc]
window!.rootViewController = tabBarController
}
Вы не сможете передавать данные через сегменты с этим подходом, как и вы. Назначьте данные, которые будут отображаться в контроллере вида при настройке firstVc
и т. Д.