2014-06-24 14 views
7

Ich habe programmgesteuert UINavigationBar in meinem Superview namens BaseViewController, die UIViewController erbt hinzugefügt. Aber wenn ich versuche, einen Titel auf die UINavigationBar zu setzen. Ich bekomme den Fehler fatalen Fehler: Kann nicht auspacken Optional. KeineÄndern UINavigationBar Titel in iOS8 Swift

Unten ist meine schnelle Klasse. Wie kann der UINavigationBar Titel

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) 
    } 

} 
+0

Wenn das optionale Objekt null ist, können Sie es nicht auspacken. Deshalb erhalten Sie den Fehler. Überprüfen Sie Objekte immer auf Null. Als Rockey vorgeschlagen versuchen Sie self.title –

Antwort

28

Ersetzen Sie Ihre navBar.topItem.title="test test" durch self.title="test test". Prost!!

+0

Einfach und schmerzlos. – Josh

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

ich diesen Code auszupacken und ändern habe ... ich hoffe, dass Sie helfen können.

+3

fataler Fehler: Kann nicht auspacken Optional. Keine gleichen Fehler und bevorzugen den Swift-Code – Ashan

0

Um den Text der Navigationsleiste pragmatisch zu ändern. Rufen Sie einfach den Func setNavigationBarTitleText("WhateverTextNeeded") an, der unten geschrieben wird. Ich gehe davon aus, dass Sie Ihre UINavigationBar bereits konfiguriert haben.

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 
} 

Ich hoffe, das hilft.

0

Sie können diesen Code verwenden, um Ihre Navigationsleiste zu transformieren.

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" 
Verwandte Themen