17

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

  1. 我在右上角拖动了一个条形按钮项。
  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 回答 4

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
于 2014-10-24T03:59:50.847 回答
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
于 2014-10-18T16:43:34.843 回答
1

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

这个答案解释了一个稍微不同的问题,但概念是一样的:

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

于 2014-08-21T14:51:48.547 回答
0

如果你想根据你的意愿设置你的“UINavigationBar”请非常安全地遵循这个,它在swift语言中如此简单,希望它对你有很大帮助。

步骤1:-

在 swift 中创建一个类别类,只需继续“新建文件”并添加“简单 swift 类”并将其命名为“MyCustomNavBarCategory.swift”

第2步:-

只需“清理课程(从此类中删除所有代码)”“在下面粘贴我的给定代码”:-

//类将从下面的行 开始从这里开始复制

让 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();
        }
    }
}

}

//类将在上述行的上述停止复制代码处结束,并将其传递到您的“MyCustomNavBarCategory.swift”中。就是这样享受;)。

第 3 步:- 现在您可以在此类中为 UINavigationBar 的任何对象设置任何框架“如果您仔细实现它,这是 UINavigationBar 的非常强大的类别”

于 2015-12-11T14:05:53.437 回答