【问题标题】:Adding Bar Button Item to Left of Navigation Item将条形按钮项添加到导航项的左侧
【发布时间】:2014-04-30 03:50:44
【问题描述】:

我正在关注this 向应用添加侧边栏导航的教程。

在给定的源代码中,他们提供了预定义的故事板布局。其中之一是具有“导航项”和显示在顶部导航栏左侧的“条形按钮项”的视图。

我试图在我的应用程序中做同样的事情,但是按钮项目一直自动出现在右侧,我找不到任何方法将其移动到左侧。

我注意到,在教程中提供的示例中,它提供了这个出口选项 leftBarButton 选项:

当我检查我的时,它看起来像这样:

由于 SWRevealView 的工作方式,没有导航控制器。当我运行该应用程序时,我可以看到该按钮并且它运行良好,唯一的问题是它在右侧。我已经将我的观点与示例进行了比较,似乎找不到任何区别。

感谢任何帮助。

编辑 这可能会有所帮助。在故事板中,工作示例如下所示:

这就是我的样子

【问题讨论】:

    标签: ios xcode storyboard xcode5 xcode-storyboard


    【解决方案1】:
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    
        [button setImage:[[UIImage imageNamed:@"BtnBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
        [button.imageView setTintColor:[UIColor whiteColor]];
        [button addTarget:self action:@selector(buttonClicked:)
         forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]
                                       initWithCustomView:button];
        self.navigationItem.leftBarButtonItem = buttonItem;
    

    【讨论】:

      【解决方案2】:

      1/.右击Storyboard > Open as > Source Code

      2/.通过Ctrl + F : <name of View Controller>查找您的视图控制器

      3/.查找navigationItem > 你会看到barButtonItem 是这样的:

      <navigationItem key="navigationItem" title="Title" id="n9s-Cu-Dtc">
         <barButtonItem key="rightBarButtonItem" title="Item" image="menu-icon-2.png" id="aN6-4T-o4T"/>
      </navigationItem>
      

      4/.将key="rightBarButtonItem" 更改为key="leftBarButtonItem"

      保存并完成。右击Storyboard &gt; Open as &gt; Builder Interface

      【讨论】:

      • 来吧苹果。为什么我必须编辑情节提要源代码才能做到这一点?
      • @kwahn:由于XCode的builder界面在未知原因渲染时出现了一些错误,所以我无法正确与Builder界面上的这个按钮进行交互。
      【解决方案3】:

      您也可以通过代码添加左侧按钮:

      NSMutableArray *leftBtns = [[NSMutableArray alloc] init];
      
      UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"LeftButton"] style:UIBarButtonItemStylePlain target:self action:@selector(leftButtonPressed)];
      [leftBtns addObject:leftBtn];
      
      [self.navigationItem setLeftBarButtonItems:leftBtns animated:NO];
      

      // 方法

      -(void)leftButtonPressed
      {
          NSLog(@"Left Button Tapped");
      }
      

      【讨论】:

        【解决方案4】:

        我通过在文档大纲中将导航栏从 vc1 拖动到 vc2 来解决它。导航栏现在可以在记分牌中用于放置导航栏按钮项。

        【讨论】:

          【解决方案5】:

          我遇到了完全相同的问题。从视觉上看,我的主视图控制器上没有导航栏,但它就在那里。

          我最终发现,如果我先点击导航视图控制器,就会出现主视图控制器上的导航栏。我在导航栏上放置了一个按钮栏项目,但随后将其删除(只是暂时需要它来启用导航栏中的图像)。然后,我可以将我从 Images.xcassets 创建的菜单图像拖到主视图控制器的导航栏上,以创建正确的按钮栏项目。您只需选择右侧实用程序部分中的媒体库图标即可找到图像并使用它们。然后只需在关联的 myviewcontroller.h 文件中设置 sidebarButton 引用插座即可。您可以通过在按住控制键的同时选择导航栏上的菜单图像,然后使用助手编辑器分屏模式将其拖到关联的 viewcontroller.h 文件中的 sidebarButton 属性上来快速完成此操作。

          在我的应用程序中的其他视图控制器(类似于照片和地图视图控制器)上,我只需要在视图控制器属性部分(在故事板中)为视图控制器的顶部栏设置半透明导航栏设置实用程序)。来自主视图控制器的相同导航栏随后出现在它们上。我还必须让他们类似地创建菜单图像按钮栏项目,并在他们的 *.h 文件中设置 sidebarButton 引用插座。 Yu 可以通过选择导航栏上的菜单图像来快速完成此操作,然后选择引用出口 (+) 符号并将其拖动到视图控制器的黄色圆圈图标上,同时按住 ctrl 键。

          不确定我是否遗漏了说明中的某些内容,但这对我有用。

          【讨论】:

            【解决方案6】:

            拖动 BarButtonItem 并将左侧放在导航项上。

            【讨论】:

              【解决方案7】:

              我在故事板中找不到管理它的方法。所以我在我的视图控制器的 ViewDidLoad 函数中对其进行了编码,添加了以下代码

              self.navigationItem.leftBarButtonItem = _sidebarButton;
              self.navigationItem.rightBarButtonItem = nil;
              

              【讨论】:

                猜你喜欢
                • 2018-06-29
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-11-03
                • 2018-01-20
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多