这是使用图像分配和初始化UIBarButton项目的正确方法吗?
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]initWithImage:@"back_topbtn.png" style:UIBarButtonItemStyleDone target:nil action:nil];
答案 0 :(得分:3)
这不是正确的方法,你没有使用图片对象,你把图像名称放在这里。所以这会向你显示警告
UIBarButtonItem *barBtn = [[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"back_topbtn.png"] style:UIBarButtonItemStyleDone target:nil action:nil] autorelease];
这是使用它的正确方法,当你没有声明任何动作时,这只是一个图像。所以声明任何动作(使用选择器)。
答案 1 :(得分:2)
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *btnImg = [UIImage imageNamed:@"some_image-name"];
[btn setImage:btnImg forState:UIControlStateNormal];
btn.frame = CGRectMake(0, 0, btnImg.size.width, btnImg.size.height);
[btn addTarget:self action:@selector(whatever) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
答案 2 :(得分:1)
正确的方法是使用UIImage。在- initWithNibName:bundle:
方法中执行此操作是有意义的。
以下是向右添加图像按钮的示例。请注意,点击按钮时会调用myButtonTapped:
,请务必执行它。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = @"My title";
UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"myimage.png"] style:UIBarButtonItemStylePlain target:self action:@selector(myButtonTapped:)];
self.navigationItem.rightBarButtonItem = myButton;
[myButton release];
}
return self;
}