Я пробовал другой подход.Но не уверен, всегда ли это работает.У меня был сгруппированный UITableView и мне нужно было сделать настроенный вид заголовка.Но, как вы знаете, при реализации метода inForce viewForHeader мы не можем определить поля для нашего созданного представления.Итак, сначала я добавил свойство CGRect в файл ViewController .m:
@property(nonatomic)CGRect groupedCellRectangle;
и в UITableViewDelegate:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
static BOOL groupFrameInitialized = NO;
if(!groupFrameInitialized){
groupFrameInitialized = YES;
self.groupedCellRectangle = cell.contentView.frame;
}
}
после этого в моем методе viewForHeader inSection:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(self.groupedCellRectangle.origin.x, 0, self.groupedCellRectangle.size.width, 28)];
[v setBackgroundColor:[UIColor clearColor]];
UILabel *label = [[UILabel alloc] initWithFrame:v.frame];
label.text = @"KAF";
[v addSubview:label];
return v;
}
результат, как я и предполагал.groupedCellRectangle успешно сохранил значение CGRect с полем.
Идея этого подхода заключалась в том, что UITableView всегда вызывает метод viewForHeader после вызова willDisplay.
Надеюсь, это поможет ...