NavigationController равен нулю при нажатии V C (простой проект, созданный программно) - PullRequest
0 голосов
/ 19 февраля 2020

Я создал простой проект с двумя ViewController (ViewController и SecondV C) программно. В ViewController я добавил кнопку, которая pu sh до SecondV C. В AppDelegate didFinishLaunchingWithOptions я установил ViewController как rootViewController.

Код ViewController:

class ViewController: UIViewController {
   let button = UIButton.init(frame: CGRect(x: 30, y: 30, width: 200, height: 200))

   override func viewDidLoad() {
       super.viewDidLoad()
       view.backgroundColor = .brown
       view.addSubview(button)
       button.backgroundColor = .black
       button.addTarget(self, action: #selector(tapped), for: .touchUpInside)
   }

   @objc func tapped() {
       let vc = SecondVC()
       self.navigationController?.pushViewController(vc, animated: true)
   }
}

SecondV C код:

class SecondVC: UIViewController {

    override func viewDidLoad() {
       view.backgroundColor = .white
    }
}

Код AppDelegate:

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var navigationController: UINavigationController?

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

    window = UIWindow(frame: UIScreen.main.bounds)

    if let window = window {
        let mainVC = ViewController()
        navigationController = UINavigationController(rootViewController: mainVC)
        window.rootViewController = navigationController
        window.makeKeyAndVisible()
    }

    return true
}

В информации о развертывании целей я удалил главный интерфейс:

Image of Main Interface

При запуске приложения в моем приложении нет навигации ViewController, поэтому, когда я нажимаю на кнопку, navigationController равен нулю, и ничего не происходит. Не удается найти проблему на второй день, пожалуйста, помогите понять, где проблема. Я использую источники XCode 11.3

, подобные этим, мне не помогает Программное создание навигационного контроллера (Swift)

1 Ответ

1 голос
/ 19 февраля 2020

Ваш код работает просто отлично. Я скопировал его и вставил в новый проект, и вот что я увидел при запуске:

enter image description here

Я нажал на большой черный квадрат, и мы скользим к сторона и вот что я увидел:

enter image description here

Я думаю, почему это не работает для вас, что вы используете Xcode 11. Если это так, проблема заключается в том, что делегат приложения находится не там, где происходит работа по запуску интерфейса приложения: это делегат scene . Но вы можете изменить это, следуя инструкциям здесь: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...