首页 文章

Swift导航栏按钮和 Headers 不会出现

提问于
浏览
17

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

  • 我在右上方拖动了一个条形按钮项 .

  • 我双击表控制器中间的 Headers 并写了一个文本 .

  • 我也在我的控制器的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 回答

  • 1

    你可以尝试这样的事情:

    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
    
  • 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
    
  • 0

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

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

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

  • 34

    如果你想根据自己的意愿设置你的 "UINavigationBar" 请非常安全地使用它,它在快速的语言中如此简单,希望它能帮到你很多 .

    STEP 1:-

    在swift中创建一个类别类,继续 "New file" 并添加 "Simple swift class " ,并将其命名为 "MyCustomNavBarCategory.swift"

    STEP 2:-

    只是 "Clean the class (remove all code from this class)""Paste my give code below" : -

    //class will Start from below line 从这里开始复制

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

    }

    // class will end on above 在上面一行停止复制代码,然后将其移到 "MyCustomNavBarCategory.swift" . 这是它的享受;) .

    STEP 3:- 现在,您可以在此类 "It's very powerful category of UINavigationBar if you will implement it carefuly" 中将任何帧设置为UINavigationBar的任何对象 .

相关问题