Swift导航栏按钮和标题不会出现

时间:2014-08-20 09:30:37

标签: swift uinavigationbar xcode6-beta5

我想在我的应用程序顶部创建一个导航栏。我创建了一个导航控制器 - >标签栏控制器 - >导航控制器 - >表控制器

  1. 我在右上方拖了一个Bar Button Item。
  2. 我双击表控制器中间的标题并写了一个文本。
  3. 我也在我的控制器的viewDidLoad()中尝试了这段代码:

    self.navigationController.navigationBar.topItem.title = "some title"
    self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:"), animated: true)
    self.navigationItem.title = "YourTitle"
    
  4. 没有它起作用 - 我做错了什么? :/

4 个答案:

答案 0 :(得分:34)

您可以尝试这样的事情:

self.title = "Your Title"

var homeButton : UIBarButtonItem = UIBarButtonItem(title: "LeftButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")

var logButton : UIBarButtonItem = UIBarButtonItem(title: "RigthButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")

self.navigationItem.leftBarButtonItem = homeButton
self.navigationItem.rightBarButtonItem = logButton

答案 1 :(得分:2)

我相信您正在寻找titleView

尝试:

var navBarTitleView = UIView(frame: CGRectMake(0.0, 0.0, self.view.frame.width, 44.0))
navBarTitleView.backgroundColor = UIColor.brownColor()
self.navigationItem.titleView = navBarTitleView

答案 2 :(得分:1)

我很确定你可以在viewDidLoad中设置表控制器的标题,这是导航栏中显示的标题。

这个答案解释了一个略有不同的问题,但概念是相同的:

https://stackoverflow.com/a/25167491/2070902

答案 3 :(得分:0)

如果您想根据自己的意愿设置&#34; UINavigationBar&#34; 请非常安全地使用它,快速语言如此简单,希望它对您有所帮助。< / p>

第1步: -

在swift中创建一个类别,只需继续&#34;新文件&#34; 并添加&#34;简单快捷的类&#34; 并给出它命名为&#34; MyCustomNavBarCategory.swift&#34;

第2步: -

只需&#34;清理课程(删除此课程中的所有代码)&#34; &#34;将我的代码粘贴到下面&#34; : -

//课程将从以下行开始从此处开始复制

让SCREEN_HEIGHT = UIScreen.mainScreen()。bounds.size.height

导入UIKit

扩展名UINavigationBar {

//First increase navigation bar height .
override public func sizeThatFits(size: CGSize) -> CGSize {
    NSLog("%f", SCREEN_HEIGHT*0.06);

    let newSize:CGSize = CGSizeMake(self.frame.size.width, SCREEN_HEIGHT*0.10)
    return newSize;
}

//then set layOut of your Custom Nav for several objects like titleview,buttons and all
public override func layoutSubviews() {
   for var view in self.subviews
    {
        NSLog("view %@", view);
        let str :String = view.classForCoder.description();
       if(str == "UILabel")
        {
              //play with title view frame
            var f       = view.frame;
            f.origin.y  = self.frame.size.height/2 - view.bounds.size.height/2  ;
            view.frame  = f;
            view.backgroundColor = UIColor.greenColor();
        }
        else if(str == "UIButton")
        {

             //play with buttons of navigation bar  view frame
            var f = view.frame;
            f.origin.y = (self.frame.size.height/2)  - (view.bounds.size.height/2) ;
            view.frame = f;
            view.backgroundColor = UIColor.greenColor();
        }
    }
}

}

// 类将在上面的上方停止复制代码,然后将其移至&#34; MyCustomNavBarCategory.swift&#34; 。它很享受;)。

第3步: - 现在,您可以将任何框架设置为此类&#34; UINavigationBar中任何UINavigationBar的对象,如果您将非常谨慎地实施它#34;