在viewForHeaderInSection中的UIButton

时间:2012-05-22 20:29:39

标签: ios uibutton tableview

我想在章节标题中添加一个信息灯按钮

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 20;
}  

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
  UIView *sectionHeaderView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];

  UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
  infoButton.frame = CGRectMake(0, 0, 18, 18); // x,y,width,height
  infoButton.enabled = YES;
  [infoButton addTarget:self action:@selector(infoButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

  //Add the subview to the UIView
  [sectionHeaderView addSubview:infoButton];
return sectionHeaderView;
}
- (void)infoButtonClicked:(id)sender {
  NSLog(@"infoButtonClicked");
}

按钮没有响应。我不太清楚为什么。这可能很简单。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我尝试了完全相同的代码(复制并粘贴)到一个可用的UITableView类中,它运行得很好。我能够点击按钮并获得调试输出。所以你的代码如上所示很好,应该可行。你班上肯定会有别的东西坏掉。

答案 1 :(得分:0)

好的。我偶然发现了我将与其他可能有类似问题的人分享的答案。

我有一个带有两个子视图的UIViewController - 一个UIView和UITableView。在故事板中,我在故事板的文档大纲视图中将UITableView放在更高的位置。 (可以使用左下角按钮打开的故事板左侧视图面板)。我认为这意味着UITableView是一个较低的层,如果你把它想象成一堆层。

我切换了图层顺序(在文档大纲视图中将UIView设置得更高),一切正常。