UINavigationBar не загружается правильно - PullRequest
0 голосов
/ 01 сентября 2018

Я знаю, что есть много вопросов на эту тему; однако, ни один из этих ответов не помог мне, и я попробовал так много способов решить эту проблему. Моя проблема в том, что моя кнопка панели не будет отображаться, первоначально, но когда контроллер представления будет представлен позже в приложении, он появится тогда, но заголовок навигации не будет отображаться. Я не уверен, почему это так, но я считаю, что это как-то связано с фреймворком SwipeNavigationController, который я использую. Моя цель состоит в том, чтобы кнопка отображалась так, как это должно быть, когда пользователь проводит пальцем влево, чтобы перейти к этому представлению, а также, когда представление впоследствии вызывается и представляется так же. Код для добавления navItem ниже:

let cameraBarButton = UIBarButtonItem(image: #imageLiteral(resourceName: "cameraIcon"), style: .plain, target: self, action: #selector(goToCamera))
navigationItem.rightBarButtonItem = cameraBarButton

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

 override func viewDidLoad() {
    super.viewDidLoad()

    setupView()

    let barHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height
    let displayWidth: CGFloat = self.view.frame.width
    let displayHeight: CGFloat = self.view.frame.height

    messagesTableView = UITableView(frame: CGRect(x: 0, y: barHeight, width: displayWidth, height: displayHeight - barHeight))
    messagesTableView.register(BlankCell.self, forCellReuseIdentifier: blankCellID)
    messagesTableView.dataSource = self
    messagesTableView.delegate = self
    self.view.addSubview(messagesTableView)

    view.backgroundColor = UIColor.white

    setupNavButtons()
    setupNavBar()

   showNoMessagesLabel()



    navigationController?.isNavigationBarHidden = false

    if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    } else {
        // Fallback on earlier versions
    }
}
override func viewWillAppear(_ animated: Bool) {



    if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
        setupNavBar()
    } else {
        setupNavBar()
    }
}

func setupNavBar() {



    UIApplication.shared.statusBarStyle = .lightContent
    self.navigationController?.isNavigationBarHidden = false
    self.navigationController?.navigationBar.topItem?.title = "Messages"
    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    self.navigationController?.navigationBar.barTintColor = UIColor.pinkNeonColor
    self.navigationController?.navigationBar.tintColor = UIColor.white


}

func setupNavButtons() {
    let cameraButton = UIButton(type: .system)
    cameraButton.setImage(#imageLiteral(resourceName: "cameraIcon").withRenderingMode(.alwaysOriginal), for: .normal)
    cameraButton.frame = CGRect(x: 0, y: 0, width: 34, height: 34)
    navigationItem.leftBarButtonItem = UIBarButtonItem(customView: cameraButton)
}
...