2017-02-05 2 views
0

У меня есть код, который показывает только первый контроллер представления в моей раскадровке при первом запуске приложения. После этого я хочу пропустить эту страницу и перейти к моему второму представлению при каждом запуске. Я встроил первый вид (который подключен ко второму) в навигационном контроллере.Swift, показывающий просмотр только при первом запуске с контроллером навигации

Моя проблема в том, что после первого запуска, когда приложение переходит ко второму представлению, оно отображает представление без панели навигации сверху, и я не уверен, почему.

В моей AppDelegate:

func firstLaunchCheck(){ 
     let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore") 
    if launchedBefore{ 
     let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let initialView : UIViewController = storyboard.instantiateViewController(withIdentifier: "mainScreen") as UIViewController 
     self.window = UIWindow(frame: UIScreen.main.bounds) 
     self.window?.rootViewController = initialView 
     self.window?.makeKeyAndVisible() 

    } 
    else{ 

     UserDefaults.standard.set(true, forKey: "launchedBefore") 
    } 

} 

UPDATE: я завелся только изменения, какой вид контроллер заливали в навигационном контроллере (исключая первый), так как это не имеет смысла для меня имейте это там. Так что теперь после первого запуска он загружает навигационный контроллер

+0

@jcka vc2 должен вставляться в контроллер навигации, а второй - в контроллер навигации, верхний vc - vc2. – aircraft

+0

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

ответ

0

SecondViewController не добавляется в UINavigationController иерархии, чтобы увидеть navigationBar на вершине, вы можете нажать SecondViewController на firstVC если launchedBefore ложна AppDelegate

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let secondVC = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
let navigationController = window.rootViewController as! UINavigationController 
navigationController?.pushViewController(secondVC, animated: false) 
0

Вы необходимо встроить второй контроллер представления, то есть «mainScreen» в UINavigationController, а затем сделать его rootViewController вашего окна приложения.

let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let navigationController = UINavigationController.init(rootViewController: storyboard.instantiateViewController(withIdentifier: "mainScreen")) 
self.window = UIWindow(frame: UIScreen.main.bounds) 
self.window?.rootViewController = initialView 
self.window?.makeKeyAndVisible() 
Смежные вопросы