我有一個UITableView,我希望用戶能夠點擊該部分的標題中的兩個按鈕,一個用於添加新記錄,另一個用於編輯它們,所以我首先使用tableView viewForHeaderInSection
和tableView heightForHeaderInSection
這樣的嘗試:UIBarButtonItem沒有響應點擊
- (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");
}
當我運行應用程序,我可以正確地看到三個UIBarButtonItems,我可以點擊他們,但NSLog的線永遠不會被調用。所以我直接在筆尖文件中添加了一個UIToolbar
,添加了3 UIBarButtonItem
控件,並將onAddVehicleInterest
和onEditVehiclesInterest
連接到相應的按鈕。但這也行不通...
因此,作爲最後一項測試,我在筆尖上添加了一個UIButton
,並將其TouchUp Inside事件綁定到其中一種方法,並且按預期工作。所以我很困惑。我究竟做錯了什麼?
我剛剛測試了你的代碼,它對我來說運行良好。 – Ander
謝謝@Ander,您的測試給了我一個主意,我是對的。我在父視圖上有一個gestureRecognizer,這與按鈕事件有關。一旦我添加了一個測試(檢查超級視圖是否爲UIToolbar),它工作正常。 –