我想在导航栏中添加一个自定义按钮(右侧)。
我的“viewDidLoad”函数中有以下代码:
UIButton *audioBtn = [[UIButton alloc] init];
[audioBtn setTitle:@"Play" forState:UIControlStateNormal];
UIImage *buttonImage = [UIImage imageNamed:@"play.png"];
[audioBtn setBackgroundImage:buttonImage forState:UIControlStateNormal];
[audioBtn addTarget:self action:@selector(toggleAudioPlayback:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithCustomView:audioBtn];
self.navigationItem.rightBarButtonItem = button;
[audioBtn release];
[button release];
我在导航栏中看不到按钮,但是如果我点击右边(按钮应该在哪里),它会触发“toggleAudioPlayback”功能,所以唯一的问题是我没有看到按钮!
我尝试使用不同的图像,设置背景颜色,没有任何效果......
顺便说一下,我在代码中的其他地方使用这个图像,我看到它(在自定义按钮上,但不在导航栏中)。
请帮帮我!
答案 0 :(得分:2)
让您的生活更轻松,而不是使用自定义图像的UIBarButtonItem而不是自定义视图:
UIBarButtonItem *audioBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"play.png"] style:UIBarButtonItemStylePlain target:self action:@selector(toggleAudioPlayback:)];
self.navigationItem.rightBarButtonItem = audioBtn;
[audioBtn release];
<强>更新强>
由于您已经表明您希望按钮没有边框,因此您需要使用CustomView,但我已修改您的代码以使其工作(关键区别在于框架的分配,设置为图像的大小,但您可以将其设置为自定义大小,使图像居中):
UIButton *audioBtn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *playImg = [UIImage imageNamed:@"play.png"];
[audioButton setBackgroundImage:playImg forState:UIControlStateNormal];
[audioButton setBackgroundImage:playImg forState:UIControlStateHighlighted];
audioBtn.frame = CGRectMake(0,0,playImg.size.width,playImg.size.height);
[audioBtn addTarget:self action:@selector(toggleAudioPlayback:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithCustomView:audioBtn];
self.navigationItem.rightBarButtonItem = button;
[audioBtn release];
[button release];
答案 1 :(得分:0)
而不是[[UIButton alloc] init]
尝试使用UIButton上的+buttonWithType:
方法。