#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"