我正在为UINavigationBar的自定义栏按钮,我使用下面的代码
UIImageView *backImgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chk_back.png"]]; [backImgView setUserInteractionEnabled:YES];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backImgView];
[backButton setTarget:self];
[backButton setAction:@selector(BackBtn)];
checkIn_NavBar.topItem.leftBarButtonItem = backButton;
问题是,它并没有叫其作用。 我在做什么错?
从苹果的文档:
使用指定的自定义视图的新项目。
- (id)initWithCustomView:(UIView *)customView
参数customView表示项目自定义视图。 返回值新初始化的项目与指定的属性。
讨论: 用这种方法创建的栏按钮项目不调用其目标的行动方法来响应用户交互。 相反,栏按钮项预计指定的自定义视图,以处理任何用户交互,并提供适当的响应。
解决方案:“与您的背景图片创建按钮(套动作这个按钮)和init栏按钮使用此按钮”。 例如:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0,0,25,25)
[btn setBackgroundImage:[UIImage imageNamed:@"chk_back.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(BackBtn) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:btn];
UIBarButtonItem *graphButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"GraphButton.png"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(graphButton)];
self.navigationItem.rightBarButtonItem = graphButton;
- (void)graphButton{
}
我完成了这个使用下面的代码:
UIButton *nxtBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[nxtBtn setImage:[UIImage imageNamed:@"chk_next.png"] forState:UIControlStateNormal];
[nxtBtn addTarget:self action:@selector(NextBtn) forControlEvents:UIControlEventTouchUpInside];
[nxtBtn setFrame:CGRectMake(0, 0, 64, 31)];
UIBarButtonItem *nextButton = [[UIBarButtonItem alloc] initWithCustomView:nxtBtn];
checkIn_NavBar.topItem.rightBarButtonItem=nextButton;