Вызовите навигационный контроллер из AppDelegate - PullRequest
0 голосов
/ 17 октября 2018

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

Вот мой код в AppDelegate

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let detailBrand = storyBoard.instantiateViewController(withIdentifier: "PagerOverviewControlerID") as! PagerOverviewControler
detailBrand.getValue = value
navigationController?.pushViewController(detailBrand, animated: true)

Этот код работает нормально, если япоместите его в любой класс ViewController, но внутри AppDelegate это не так.

Пожалуйста, помогите !!!

1 Ответ

0 голосов
/ 17 октября 2018

Ну, во-первых, вы должны понять, что Appdelgate - это не UIViewController,

, поэтому вы не можете использовать pushViewController(detailBrand, animated: true), потому что вы не совсем в UIVewController, чтобы иметь возможностьчтобы сделать это, но вместо этого вы можете инициировать UINavigatetionController установить его в качестве корня, а затем нажать от него.

и ваш код должен выглядеть примерно так:

let rootViewController = self.window!.rootViewController as! UINavigationController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let profileViewController = mainStoryboard.instantiateViewController(withIdentifier: "PagerOverviewControlerID") as! PagerOverviewControler
rootViewController.pushViewController(profileViewController, animated: true)

Также имейте в виду, что вы должны поместить его в метод didFinishLaunchWithOption.

func application(_ application: UIApplication, 
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool
...