2016-11-10 126 views
0

我试图通过设置为导航栏标题的标签(UILabel)将UIViewController子类化。我不想将名称设置为self.title,而是使用属性字符串来设置标题。使用NavigationBar子类UIViewController标题

class BasicViewController: UIViewController { 
    var titleString = "" 

    func setup() { 
     //self.title = titleString 
     let navBar = navigationController!.navigationBar 
     navBar.barTintColor = UIColor.redColor() 
     let atext = NSMutableAttributedString(string: titleString) 
     atext.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, atext.length)) 
     atext.addAttribute(NSStrokeColorAttributeName, value: UIColor.yellowColor(), range: NSMakeRange(0, atext.length)) 
     atext.addAttribute(NSStrokeWidthAttributeName, value: NSNumber.init(float: -1.0), range: NSMakeRange(0, atext.length)) 
     let titleLabel:UILabel = UILabel.init(frame: CGRectMake(50, 3, 220, 44)) 
     titleLabel.attributedText = atext 
     titleLabel.textAlignment = NSTextAlignment.Center 
     titleLabel.font = UIFont(name: "Helvetica", size: 24.0) 
    } 
} 

class HomeViewController: BasicViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     titleString = "My App" 
     setup() 
    } 
} 

如果我运行此代码,我会得到一个空标题。我究竟做错了什么?谢谢。

+0

是否将'titleLabel'添加到任何视图? 你可以使用下面的didSet方法btw,所以你不必在设置字符串后运行'setup()'。 '''VAR titleString = “”{ didSet { 让导航栏= navigationController!.navigationBar (...) }} ''' – Houwert

+0

titleLbel可以被添加到导航栏,如果我直接插入线使用HomeViewController的viewDidLoad在setup()内部的代码。 –

回答

0

我看不到你正在设置的位置self.navigationItem.titleView = titleLabel

相关问题