RightBarButtonItem 未出现在导航栏中

Posted

技术标签:

【中文标题】RightBarButtonItem 未出现在导航栏中【英文标题】:RightBarButtonItem Does Not Appear in Navigation Bar 【发布时间】:2013-01-26 23:03:32 【问题描述】:

这让我很生气!我只是想以编程方式在我的导航栏上添加一个右侧的“flash”按钮,无论出于何种原因,我都无法让它出现。我的代码如下。谁能帮我?提前致谢。

 //Note: flashButton is declared as a UIButton property in .h, and synthesized in .m        
    UIView *flashContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 36, 36)];

    [flashButton addTarget:self action:@selector(toggleTorch) forControlEvents:UIControlEventTouchUpInside];
    [flashButton setBackgroundImage: [UIImage imageNamed:@"FlashIconInactive_small.png"] forState:UIControlStateNormal];
    [flashButton setBackgroundImage: [UIImage imageNamed:@"FlashIconActive_small.png"] forState:UIControlStateHighlighted];

    [flashContainer addSubview:flashButton];
    [flashButton sizeToFit];

    UIBarButtonItem *flashButtonItem = [[UIBarButtonItem alloc] initWithCustomView:flashContainer];

    scannerVC.delegate = self;
    scannerVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelTapped)];
    [[scannerVC navigationItem] setRightBarButtonItem:flashButtonItem];

【问题讨论】:

所以左键可以正常工作吗?是正确的吗? 正确,@Nabou,左侧按钮出现并且工作正常。 【参考方案1】:

flashButton 是否通过 IBOutlet 连接到 xib 或情节提要中的按钮?如果没有,您需要使用+[UIButton buttonWithType:] 创建一个 UIButton 实例。

另一个要尝试的测试是在第一行(addTarget: one)上设置一个断点,然后在调试器中输入po flashButton。输出是什么?如果为 nil,则您的按钮不存在,需要创建。

【讨论】:

我已经声明了 'UIButton *flashButton' 并在我的 .h(在我的 .m 文件中合成)中将它作为一个属性。我以编程方式完成这一切,而不是使用 XIB/Storyboard。 @Kris 这还不够吗? @JRoss,不,您必须为按钮分配内存。您可以为此使用+[UIButton buttonWithType:]。如果您声明为@property,则需要将其用作self.flashButton,而不是单独使用flashButton 谢谢@Kris!我觉得自己像个白痴,但有时我会忘记基本知识!我添加了以下行以使我的代码正常工作: flashButton = [UIButton buttonWithType:UIButtonTypeCustom]; @JRoss,如果你想使用@property,你仍然需要将其更改为self.flashButton,Kris忘了提及。 我删除了属性/合成,它工作正常。我认为我的 viewController 不需要将其作为属性。我有理由将其设为财产吗? @ACB

以上是关于RightBarButtonItem 未出现在导航栏中的主要内容,如果未能解决你的问题,请参考以下文章

rightBarButtonItem 出现在中间

导航栏上超过 1 个 rightBarButtonItem

从导航控制器设置 rightBarButtonItem

导航栏未填充 - iOS7

导航栏和它的titleView rightBarButtonItem随着动画变得更小

iOS7 iphone rightBarButtonItem 标题未正确居中/显示