在导航项左侧添加条形按钮项

11

我正在按照这个教程,给应用程序添加一个侧边栏导航。

在给出的源代码中,他们提供了预定义的storyboard布局之一,其中包含一个“导航项”和一个位于顶部导航栏左侧的“栏按钮项”。

我正在尝试在我的应用程序中执行相同的操作,但是按钮项目始终自动显示在右侧,并且我找不到任何将其移动到左侧的方法。

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

enter image description here

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

enter image description here

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

任何帮助都将不胜感激。

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

enter image description here

而我的则是这样的:

enter image description here

7个回答

18

拖动BarButtonItem并将其放置在导航项的左侧。


7

我在Storyboard中找不到管理它的方法。因此,我在我的ViewController的ViewDidLoad函数中编写了以下代码:

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

5

1/. 右键单击 Storyboard > 打开方式 > 源代码

2/. 通过 Ctrl + F : <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 > Open as > Builder Interface


来吧,苹果。我为什么要编辑Storyboard源代码才能做到这一点? - kwahn
@kwahn:因为XCode的构建器界面出现了一些未知原因的错误,所以我无法正确地与该按钮进行交互。 - SLyHuy

2
我曾经遇到了完全相同的问题。在我的主视图控制器上,导航栏没有被正确地显示出来,但实际上它是存在的。
后来我发现,如果先点击导航视图控制器,主视图控制器的导航栏就会出现。我在导航栏上放置了一个按钮条项目,然后将其删除(只是暂时需要它来启用导航栏中的图像)。然后,我就可以从Images.xcassets中创建的菜单图像拖动到Main视图控制器的导航栏上,以创建正确的按钮条项目。你只需在右侧工具栏中选择媒体库图标,即可找到图像并使用它们。然后,在相关的myviewcontroller.h文件中设置sidebarButton引用输出。你可以通过同时按住控制键并在助理编辑器分屏模式下将菜单图像拖动到关联的viewcontroller.h文件中的sidebarButton属性上来快速完成此操作。
在我的应用程序中的其他视图控制器上(类似于照片和地图视图控制器),我只需要将视图控制器的顶部栏设置为半透明导航栏,即可在它们上面显示与主视图控制器相同的导航栏。我还必须创建它们的菜单图像按钮条项目并在它们的*.h文件中设置sidebarButton引用输出。你可以通过选择它们导航栏上的菜单图像,然后选择引用输出(+)符号并在同时按住ctrl键的情况下将其拖动到视图控制器的黄色圆圈图标上来快速完成此操作。
不确定我是否遗漏了一些说明,但这对我有效。

1

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

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");
}

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

-1

我通过在文档大纲中从vc1拖动导航栏到vc2来解决了这个问题。现在可以在记分牌中放置导航栏按钮项。


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