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

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

Ниже мой быстрый класс. Как развернуть и изменить заголовок 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)
    }

}

person Ashan    schedule 24.06.2014    source источник
comment
если необязательный объект равен нулю, вы не можете его развернуть. Вот почему вы получаете ошибку. Всегда проверяйте объекты на nil. Как предложил Рокки, попробуйте self.title   -  person Clement Prem    schedule 28.08.2014


Ответы (4)


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

person Rocky Perera    schedule 27.08.2014

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

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

person StrawHara    schedule 24.06.2014
comment
фатальная ошибка: невозможно развернуть необязательный.Нет Та же ошибка и предпочесть быстрый код - person Ashan; 24.06.2014

Прагматично изменить текст панели навигации. Просто вызовите функцию 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
}

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

person Vivek Parihar    schedule 19.10.2015

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

 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"
person tavo7910    schedule 27.06.2017