self.headerView.frame = CGRectMake(0, 0, 320, 167); //this is a UIView
, похоже, ничего не делает.все подключено в IB.
Мне нужно вызвать setHeaderView после определения кадра.
Попробуйте метод -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section UITableViewDelegate.
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Кроме того, -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section также может быть вам интересен, если вы пытаетесь добавить пользовательское представление в качестве заголовка.
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
это в UITableViewController?Если это так, попробуйте получить доступ к tableHeaderView (self.tableView.headerTableView), а затем получить желаемое подпредставление.
self.tableView.headerTableView