Swift导航栏按钮和标题不显示

17

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

  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"
    

什么都没用,我做错了什么? :/


你找到解决方案了吗? - Shaheera
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

如何设置图标而不是文本? - benLIVE
我找到了如何做:) var homeBytton: UIBarButtonItem = UIBarButtonItem(image: <#UIImage?#>, style: <#UIBarButtonItemStyle#>, target: <#AnyObject?#>, action: <#Selector#>) - benLIVE
请记住,您可以省略 UIBarButtonItemStyle,直接使用 .Plain 之类的内容......另外,您应该使用 let 而不是 var - Sakiboy

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

1

我非常确定你只需要在表格控制器的viewDidLoad方法中设置标题,这个标题将会显示在导航栏上。

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

https://dev59.com/dF8e5IYBdhLWcg3w-OYn#25167491


0

如果您想根据自己的意愿设置您的"UINavigationBar",请按照以下步骤进行操作,使用Swift语言非常简单,希望能对您有所帮助。

步骤1:

在Swift中创建一个分类类,只需点击"新文件"并添加"简单的Swift类",并将其命名为"MyCustomNavBarCategory.swift"

步骤2:

只需"清空该类(从该类中删除所有代码)""粘贴下面给出的代码"

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

let SCREEN_HEIGHT = UIScreen.mainScreen().bounds.size.height

import UIKit

extension 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"中即可。就这样享受吧;).

第三步:- 现在,您可以在此类中为UINavigationBar的任何对象设置任何框架"如果您小心实施,它是非常强大的UINavigationBar类别"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接