【问题标题】:Swift Navigation Bar Button and Title don't appearSwift 导航栏按钮和标题不出现
【发布时间】:2014-10-13 14:34:04
【问题描述】:

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

  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"
    

没有任何效果 - 我做错了什么? :/

【问题讨论】:

  • 您找到解决方案了吗?

标签: swift uinavigationbar xcode6-beta5


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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
    

    【讨论】:

      【解决方案3】:

      你可以试试这样的:

      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
      

      【讨论】:

      • 如何设置图标而不是文字?
      • 我找到了方法:) --> var homeBytton : UIBarButtonItem = UIBarButtonItem(image: , style: , target: , action : )
      • 请记住,您可以省略UIBarButtonItemStyle,而只使用.Plain 之类的名称。 ...您也应该使用let 而不是var。
      【解决方案4】:

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

      第 1 步:-

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

      第 2 步:-

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

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

      }

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-04
        • 2022-12-05
        • 1970-01-01
        • 1970-01-01
        • 2017-08-12
        • 2017-12-19
        • 1970-01-01
        相关资源
        最近更新 更多