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 未出现在导航栏中的主要内容,如果未能解决你的问题,请参考以下文章