如何在ios中动态更改uitableview的特定标题部分高度

时间:2014-12-26 06:43:31

标签: ios objective-c uitableview sectionheader

我有一个UITableView,在标题部分有多个headerSection可用。默认高度为 56 。现在,每当我点击特定部分的按钮时,我想将特定的headerSection高度更改为 40 。点击会触发方法(sectionOpened:),这有助于更改高度。但那时,另一个headerSection的高度应保持 56 。我怎么做?我到目前为止的尝试: 应

float headerSectionHeightDefault;

- (void)viewDidLoad
{
    [super viewDidLoad];
    headerSectionHeightDefault=56;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return headerSectionHeightDefault;
}


- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    headerView = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];

    UIImageView *img = [[UIImageView alloc]initWithFrame:CGRectMake(15, 0, 300, 40)];
    img.image = [UIImage imageNamed:@"menu_btn7.png"];

    [headerView addSubview:img];

    return headerView;
}

- (void) sectionOpened : (NSInteger) section
{
    [menulistTable beginUpdates];

    if(section==0)
    {
        headerSectionHeightDefault=40;
    }
    else
    {
        headerSectionHeightDefault=56;
    }

    [menulistTable endUpdates];
    self.openSectionIndex = section;
}

3 个答案:

答案 0 :(得分:4)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return headerSectionHeightDefault;
}

通过使用此代码,您将该部分的高度返回到40(即headerSectionHeightDefault),因此您需要为每个部分设置高度并单独返回。

答案 1 :(得分:1)

我在同一场景中工作并通过以下代码实现

dp

答案 2 :(得分:0)

而不是tableview更新,尝试在更改headerSectionHeightDefault的值后重新加载tableview。

- (void) sectionOpened : (NSInteger) section
{
    if(section==0)
    {
        headerSectionHeightDefault=40;
    }
    else
    {
        headerSectionHeightDefault=56;
    }
    self.openSectionIndex = section;
    [menulistTable reloadData];
}