Iphone 动态加载计算大小的Tableview标头

Iphone 动态加载计算大小的Tableview标头,iphone,ios,ios4,Iphone,Ios,Ios4,大家好,我正在开发一个应用程序。我想显示一个带有标题视图的表视图。当我从根视图导航到下一个视图(表视图)时,如下所示。但我的问题是当我将一些文本从根视图传递到下一个视图(表视图)时作为下一个视图的标题,它以适当的格式显示如下所示。我需要解决方案来显示更好的格式。下面是我用于此的代码 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { /* NSString *

大家好,我正在开发一个应用程序。我想显示一个带有标题视图的表视图。当我从根视图导航到下一个视图(表视图)时,如下所示。但我的问题是当我将一些文本从根视图传递到下一个视图(表视图)时作为下一个视图的标题,它以适当的格式显示如下所示。我需要解决方案来显示更好的格式。下面是我用于此的代码

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{

/*   NSString *str_header1;
 str_header1=[[NSString alloc]initWithString:@"Heading : "];
 str_header1=[str_header1 stringByAppendingFormat:str_code1];
 str_header1=[str_header1 stringByAppendingFormat:@" - "];
 str_header1=[str_header1 stringByAppendingFormat:str_header]; */


// Create label with section title
UILabel *tmpTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 15, 300, 20)];
UILabel *titleLabel = tmpTitleLabel;
titleLabel.font = [UIFont boldSystemFontOfSize:12];
titleLabel.numberOfLines = 0;
titleLabel.textColor = [UIColor colorWithRed:0.30 green:0.34 blue:0.42 alpha:1.0];
titleLabel.shadowColor = [UIColor whiteColor];
titleLabel.shadowOffset = CGSizeMake(0.0, 1.0);
titleLabel.backgroundColor=[UIColor clearColor];
titleLabel.lineBreakMode = UILineBreakModeWordWrap;
titleLabel.text = str_combine;

//Calculate the expected size based on the font and linebreak mode of label
CGSize maximumLabelSize = CGSizeMake(300,9999);
expectedLabelSize= [str_combine sizeWithFont:titleLabel.font constrainedToSize:maximumLabelSize lineBreakMode:titleLabel.lineBreakMode];

//Adjust the label the the new height
CGRect newFrame = titleLabel.frame;
newFrame.size.height = expectedLabelSize.height;
titleLabel.frame = newFrame;



// Create header view and add label as a subview
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 0, 320, expectedLabelSize.height+30)];
[view addSubview:titleLabel];

return view;
}


您的代码假定总是在
-tableView:heightForHeaderInSection:
之前调用
-tableView:heightForHeaderInSection:
,但事实并非如此。您可以将尺寸计算移动到
-tableView:heightForHeaderInSection:
以解决此问题

更好的是,因为您似乎只使用了一个表头视图:
UITableView
上有一个名为
tableHeaderView
的属性,您可以使用它。将方法
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
重命名为
-(UIView*)headerView
,删除方法
-tableView:heightForHeaderInSection:
,并在视图控制器的
-viewDidLoad
方法末尾添加以下行:

self.tableView.tableHeaderView = [self headerView];

表单从何处获得expectedLabelSize内部委托heightForHeaderInSection?请勿使用委托的heightForHeaderInSection方法。如果您使用的是xib,则为tableView设置默认截面高度。希望这会有所帮助。我已经用不合适的格式显示了tableview和tableview标题。我希望标题后跟tableview。根据计算的标签大小,我还必须增加标题高度。
self.tableView.tableHeaderView = [self headerView];