0

我有一个表格视图,其中有表格视图的标题和部分的另一个标题。部分的标题顶部有一个按钮,当按下按钮时,我需要更改此标题的大小。

我确实更改了标题大小,但其中的内容没有相应改变。

我什至用这个修复了它-

_isHeaderExtended = !_isHeaderExtended;
[self.testTable beginUpdates];
CGPoint point = testTable.contentOffset;
point.y = (_isHeaderExtended)? point.y - 1: point.y + 1;

[testTable setContentOffset:point animated:NO];
[self.testTable endUpdates];

我的整个代码如下

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{

    return 30;
}

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

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

    [self.testTable beginUpdates];
    CGFloat fl = (_isHeaderExtended)?200:100;
    [self.testTable endUpdates];

    return fl;
}

-(IBAction)buttonPushed:(id)sender {
    _isHeaderExtended = !_isHeaderExtended;

    [self.testTable beginUpdates];
    CGPoint point = testTable.contentOffset;
    point.y = (_isHeaderExtended)? point.y - 1: point.y + 1;

    [testTable setContentOffset:point animated:NO];
    [self.testTable endUpdates];


}

基本上我需要根据我使用的调整大小来拉伸标题的内容,有什么想法吗???

4

2 回答 2

0

做这个:

  • 消除对beginUpdateendUpdatein的调用heightForHeaderInSection。他们与datasource协议无关。

  • 确保您在标题视图中返回的视图已按预期进行初始化和配置。大概你在viewDidLoad.

  • 为了让标题的内容伸展,您可以将此视图设置autoresizingMask为所需的值。或者,您可以使用 IB 配置视图以使用容器视图调整大小。您必须在viewForHeaderInSection.

推荐的设计模式将完全不同:将大小的所有逻辑放入您的数据源方法(heightForHeaderInSectionviewForHeaderInSection)中,即您可以检查您的_isHeaderExpanded变量。然后,在切换方法中,只需重新加载该部分。

于 2012-12-13T16:28:13.957 回答
0

我觉得应该改成:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    if( _isHeaderExtended ){
        return bigTestView;
    } else {
        return smallTestView;
    }
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return _isHeaderExtended?200:100;
}

-(IBAction)buttonPushed:(id)sender {
    _isHeaderExtended = !_isHeaderExtended;
    [self.testTable reloadData];
}

然后你需要为 header 创建一个 bigTestView 和一个 smallTestView。

于 2012-12-13T16:30:36.843 回答