使用.xib为UITableView的footerView创建一个UIView

时间:2012-09-01 05:39:12

标签: iphone

我正在尝试实现UITableView的数据源方法:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

我在代码中完成了这项工作。如果可能的话,我希望能够在IB中进行更复杂的布局。首先,我添加了一个UISegmentedControl和一个UIButton。我的数据源方法如下:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    // Footer should just be on the last section in the grouped table.
    if (section == kNotesSection) {
        UINib *nib = [UINib nibWithNibName:@"DetailFooterView" bundle:nil];
        NSArray *views = [nib instantiateWithOwner:self options:nil];
        UIView *nibView = [views objectAtIndex:0];
        [nibView addGestureRecognizer:tapGesture];

        return nibView;
    }
    else {
        return nil;
    }
}

我能够在TableView的底部看到我的页脚视图。但是,没有发生用户交互。我点击按钮,我没有看到任何事情发生。所以我的第一个问题是,这是正确的方法吗?

第二个问题,我如何将目标/操作对与.xib相关联,因为我没有连接到.xib的出口或操作,就像我通常使用典型的UIViewController + .xib模板一样。这是我第一次尝试以这种方式使用分离的xib而不确定这些来龙去脉。谢谢!

1 个答案:

答案 0 :(得分:0)

这样做:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
  // Footer should just be on the last section in the grouped table.
  if (section == kNotesSection) {

   UIView *nibView = [[[NSBundle mainBundle] loadNibNamed:@"DetailFooterView" owner:self options:nil] objectAtIndex:0];
  [nibView setUserInteractionEnabled:YES];
  [nibView addGestureRecognizer:tapGesture];
   return nibView;

  else {
    return nil;
  }
}