我正在使用
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
customView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 24.0)];//custom view
// create the button object
headerLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width, 18)];//header label
headerLabel.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"section" ofType: @"png"]]];
customView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"section" ofType: @"png"]]];
headerLabel.textColor = [UIColor whiteColor];//text color of header label
headerLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:15];//font of header label
headerLabel.font = [UIFont boldSystemFontOfSize:15];
headerLabel.frame = CGRectMake(0.0, 0.0, 320.0, 24.0);//frame of header label
if(searching)//checking searching {
headerLabel.text = @" Search Results";//searching results as a text of header label
}
else {
if(section == 0)//checking which section is chosen {
headerLabel.text = @" Sponsored";//sponsored as header label
}
else {
headerLabel.text = @" Unsponsored";//un sponsored as header label
}
}
if(searching)//checking searching {
headerLabel.text = @" Sök resultat";//sok resultant text as a header label
}
else {
if(section == 0)//checking which section is chosen {
headerLabel.text = @" Sponsrade";//sponsorade as text of header label
}
else {
headerLabel.text = @" Un Sponsrade";//usponsrade as text of header label
}
}
[customView addSubview:headerLabel];//header label as a subview
//NSLog(@"endOfviewForHeaderInSection");
//[headerLabel release];
return customView;//returning custom view
[customView release];
//NSLog(@"endOfviewForHeaderInSection");
}
在表视图中的header部分将表分成两部分,当我在滚动表视图时上下内存分配增加得非常快,但是在header部分上没有使用上面提到的代码,没有内存分配和app工作罚款。但是需要在标题部分使用上面的代码,我不能从标题中删除代码,我也想减少内存分配。还有其他方法来解决问题。
先谢谢。
答案 0 :(得分:4)
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
//NSLog(@"startOfviewForHeaderInSection");
// create the parent view that will hold header Label
customView = nil;
[customView release];
headerLabel =nil;
[headerLabel release];
customView = [[UIView alloc]init];
headerLabel = [[UILabel alloc]init];
// customView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 24.0)];//custom view
// create the button object
// headerLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width, 18)];//header label
//customView.frame = CGRectMake(0.0, 0.0, 320.0, 24.0);
//headerLabel.frame = CGRectMake(0.0, 0.0, 320.0, 24.0);//frame of header label
//DetailedCoupon *detailedcouponObj = [[DetailedCoupon alloc]init];//object of detailed
headerLabel.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"section" ofType: @"png"]]];
//customView.backgroundColor = [detailedcouponObj getColor:@"D7D8D1"];//background color
customView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"section" ofType: @"png"]]];
//headerLabel.backgroundColor = [UIColor blackColor];
// headerLabel.opaque = NO;//opaque header label
headerLabel.textColor = [UIColor whiteColor];//text color of header label
// headerLabel.highlightedTextColor = [UIColor whiteColor];//highlighted text color of header label
// headerLabel.font = [UIFont boldSystemFontOfSize:20];//font of header label
headerLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:15];//font of header label
headerLabel.font = [UIFont boldSystemFontOfSize:15];
headerLabel.frame = CGRectMake(0.0, 0.0, 320.0, 24.0);//frame of header label
NSUserDefaults *pref = [NSUserDefaults standardUserDefaults];//object of NSUserDefault
NSString *storeLanguage = [pref objectForKey:@"language"];//store language of string type
if ([storeLanguage isEqualToString:@"English"])//comparison of language choosed
{
if(searching)//checking searching
{
headerLabel.text = @" Search Results";//searching results as a text of header label
}
else {
if(section == 0)//checking which section is choosed
{
headerLabel.text = @" Sponsored";//sponsored as header label
}
else
{
headerLabel.text = @" Unsponsored";//un sponsored as header label
}
}
}
else
{
if(searching)//checking searching
{
headerLabel.text = @" Sök resultat";//sok resultant text as a header label
}
else {
if(section == 0)//checking which section is choosed
{
headerLabel.text = @" Sponsrade";//sponsorade as text of header label
}
else
{
headerLabel.text = @" Un Sponsrade";//usponsrade as text of header label
}
}
}
[customView addSubview:headerLabel];//header label as a subview
//NSLog(@"endOfviewForHeaderInSection");
//[headerLabel release];
storeLanguage = nil;
[storeLanguage release];
return customView;//returning custom view
[pref release];
[customView release];
//NSLog(@"endOfviewForHeaderInSection");
}
答案 1 :(得分:0)
您的代码在帖子中的格式很差,难以理解。
但我看到的是:您可能会在释放之前退回自定义视图。你可以在返回之前自动发布它。
如果这是表的顶部部分的一种可能性是使用表的headerView,我相信你不需要像viewForHeaderInSection那样重复分配。您也可以尝试创建和缓存新内容,而不是一遍又一遍地创建它。