我有一个UITableView,我希望用户能够在该部分的标题中单击两个按钮,一个用于添加新记录,另一个用于编辑它们,所以我首先尝试使用{{1和tableView viewForHeaderInSection
这样:
tableView heightForHeaderInSection
当我运行应用程序时,我可以正确地看到三个UIBarButtonItems,我可以单击它们,但是从不调用NSLog行。因此,我在nib文件中直接添加了- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 44;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView* v = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 360, 44)];
UIToolbar* tb = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 360, 44)];
UIBarButtonItem* spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem* addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(onAddVehicleInterest:)];
UIBarButtonItem* editBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(onEditVehiclesInterest:)];
[tb setItems:[NSArray arrayWithObjects:spacer, addBtn, editBtn, nil]];
[v addSubview:tb];
return v;
}
- (IBAction)onAddVehicleInterest: (id) sender {
NSLog(@"Add");
}
- (IBAction)onEditVehiclesInterest:(id)sender {
NSLog(@"Edit");
}
,向其中添加了3个UIToolbar
控件,并将UIBarButtonItem
和onAddVehicleInterest
绑定到相应的按钮。但那也不起作用......
所以,作为最后一次测试,我在nib中添加了onEditVehiclesInterest
并将其Touch Up Inside事件绑定到其中一个方法,并且按预期工作。所以我很困惑。我做错了什么?
答案 0 :(得分:5)
我在视图控制器的父视图上有一个UITapGestureRecognizer。一旦我删除了轻击手势,我的UIBarButtonItems就开始对所有选择器做出正确响应。
答案 1 :(得分:1)
我也遇到了同样的问题,我通过改变来解决问题: -
- (IBAction)onAddVehicleInterest: (id) sender {
to
- (IBAction)onAddVehicleInterest: (UIBarButtonItem *) sender {
我也不知道为什么它没有提前工作,但我的问题解决了。 你可以试试这个。
答案 2 :(得分:0)
试试这个:
UIBarButtonItem* addBtn;
if([self respondsToSelector:@selector(onAddVehicleInterest:)])
{
addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(onAddVehicleInterest:)];
}
UIBarButtonItem* editBtn
if([self respondsToSelector:@selector(onEditVehiclesInterest:)])
{
editBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(onEditVehiclesInterest:)];
}
if(addBtn && editBtn)
{
[tb setItems:[NSArray arrayWithObjects:spacer, addBtn, editBtn, nil]];
}