您不必创建一个UIButton
并将其用作自定义视图UIBarButtonItem
。您可以创建一个UIBarButtonItem
直接用图像:
UIImage *myImage = [UIImage imageNamed:@"myImage.png"];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStyleBordered target:self action:@selector(refreshSection)];
self.navigationItem.rightBarButtonItem = button;
[button release];
--
根据评论已更新
Use a UIImageView
作为自定义视图UIBarButtonItem
:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
self.navigationItem.rightBarButtonItem = rightButton;
[imageView release];
[rightButton release];
--
Updated
尝试了最后一种方法,虽然这在视觉上看起来确实像您想要的那样,但我似乎无法让它处理水龙头。虽然目标和行动已经确定。
--
最终更新
我已经在问题中得到了你的初始代码并运行。图像未显示的原因是您尚未设置按钮的框架。设置框架后,图像将显示在导航栏中。
这是我使用和测试的片段:
UIImage *myImage = [UIImage imageNamed:@"paw.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setImage:myImage forState:UIControlStateNormal];
myButton.showsTouchWhenHighlighted = YES;
myButton.frame = CGRectMake(0.0, 0.0, myImage.size.width, myImage.size.height);
[myButton addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:myButton];
self.navigationItem.rightBarButtonItem = rightButton;
[rightButton release];
[myButton release];
注意:我已经设置了showsTouchWhenHighlighted
的财产UIButton
按下按钮时在视觉上突出显示该按钮。