Как ссылаться на классы из двух разных целей в AppDelegate? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть две разные цели в моем приложении, и я хочу отображать определенный контроллер представления при запуске в зависимости от цели. Прямо сейчас мой код выглядит так:

if target1:
   window?.rootViewController = ViewController1()
else:
   window?.rootViewController = ViewController2()

Однако здесь есть проблема, поскольку XCode говорит, что он не может распознать класс ViewController2. AppDelegate.swift является членом обеих целей, ViewController1 является членом цели 1, а ViewController2 является членом цели 2. Всякий раз, когда я устанавливаю ViewController2 в качестве члена цели 2, эта ошибка исчезает, но та же самая ошибка появляется в ViewController2.swift всякий раз, когда я ссылаюсь на другой файл, который является только членом цели 2.

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

Я просто использую контроллер навигации и использую идентификатор контроллера вида, чтобы установить мой целевой контроллер. Попробуйте, может это вам поможет

 if target1{
 let window = UIWindow(frame:UIScreen.main.bounds)
 let storyboard = UIStoryboard(name: "Main", bundle: nil)
 let navigate = storyboard.instantiateViewController(withIdentifier: 
 "ViewController") as! ViewController
  navController = UINavigationController(rootViewController: navigate)
  window?.rootViewController = navController
  navigate.navigationController?.navigationBar.isHidden = true
  window?.makeKeyAndVisible()
}else{
   let window = UIWindow(frame:UIScreen.main.bounds)
   let storyboard = UIStoryboard(name: "Main", bundle: nil)
   let navigate = storyboard.instantiateViewController(withIdentifier: 
   "ViewController") as! ViewController
   navController = UINavigationController(rootViewController: navigate)
   window?.rootViewController = navController
   navigate.navigationController?.navigationBar.isHidden = true
   window?.makeKeyAndVisible()

}

0 голосов
/ 26 марта 2020

Вы должны добавить и ViewController1, и ViewController2 к обоим целевым объектам, поскольку xcode может достигать только файлы, выбранные в целевом объекте, при компиляции кода. Таким образом, в соответствии с выбранной целью, xcode не распознает другой viewController, если вы не добавите его.

...