Изменение заголовка UINavigationBar в iOS8 Swift

#uinavigationbar #swift #ios8

#панель управления uinavigationbar #быстрый #ios8

Вопрос:

Я программно добавил UINavigationBar в свой супервизор с именем BaseViewController, который наследует UIViewController. Но когда я пытаюсь установить заголовок для UINavigationBar. Я получаю ошибку под названием fatal error: не удается развернуть Optional.None

Ниже приведен мой класс swift. Как можно развернуть и изменить заголовок UINavigationBar

 import UIKit

class BaseViewConroller: UIViewController {
    var navBar:UINavigationBar=UINavigationBar()

    override func viewDidLoad() {
        super.viewDidLoad()
        setNavBarToTheView()
        // Do any additional setup after loading the view.
        navBar.topItem.title="test test"
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func setNavBarToTheView()
    {
        navBar.frame=CGRectMake(0, 0, 320, 50)
        navBar.backgroundColor=(UIColor .blackColor())
        self.view .addSubview(navBar)
    }

}
 

Комментарии:

1. если необязательный объект равен нулю, вы не сможете его развернуть. Вот почему вы получаете сообщение об ошибке. Всегда проверяйте объекты на nil. Как предложил Рокки, попробуйте self.title

Ответ №1:

Замените свой navBar.topItem.title="test test" на self.title="test test" . Ваше здоровье!!

Ответ №2:

 UILabel *labelTitle = UILabel(frame: CGRectZero);
labelTitle.text = "Title";
labelTitle.text.textAlignment = NSTextAlignment.Center
self.navigationItem.titleView = labelTitle;
 

У меня есть этот код… Я надеюсь, что это может вам помочь.

Комментарии:

1. неустранимая ошибка: не удается развернуть необязательный файл. Нет такой же ошибки и предпочитаю быстрый код

Ответ №3:

Чтобы прагматично изменить текст панели навигации. Просто вызовите функцию setNavigationBarTitleText("WhateverTextNeeded") , описанную ниже. Я предполагаю, что вы уже настроили свою UINavigationBar.

 var navBar = UINavigationBar(frame: CGRectZero)

func setNavigationBarTitleText(text: String){
    let titleLabel = UILabel(frame: CGRectMake(0, 0, view.frame.size.width - 120, 44))
    titleLabel.backgroundColor = UIColor.clearColor()
    titleLabel.numberOfLines = 2
    titleLabel.font = UIFont(name: UIConfig.Fonts.OswaldRegular,  size: 16)
    titleLabel.textAlignment = NSTextAlignment.Center
    titleLabel.text = text.uppercaseString
    self.navBar.topItem?.titleView = titleLabel
}
 

Надеюсь, это поможет.

Ответ №4:

Вы можете использовать этот код для преобразования панели навигации.

  self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "imageName")
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "imageName")
    self.navigationController?.navigationBar.backItem?.title = ""
    self.navigationController?.navigationBar.tintColor = UIColor.white
    self.title = "Title"