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

次のように変更する必要があると思います。

-(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];
}

次に、ヘッダー用に bigTestView と smallTestView を作成する必要があります。

于 2012-12-13T16:30:36.843 に答える
0

これを行う:

  • beginUpdateとの呼び出しを削除しendUpdateますheightForHeaderInSectiondatasource彼らはプロトコルにビジネスを持っていません。

  • ヘッダー ビューで返すビューが意図したとおりに初期化および構成されていることを確認してください。でこれを行うと思われますviewDidLoad

  • ヘッダーのコンテンツを引き延ばすために、このビューを目的の値に設定できautoresizingMaskます。または、IB を使用して、コンテナー ビューでサイズ変更するようにビューを構成することもできます。で適切なサイズのビューを返す必要がありますviewForHeaderInSection

推奨される設計パターンはまったく異なります。サイズのすべてのロジックをデータソース メソッド (heightForHeaderInSectionおよび) に入れます。つまり、変数viewForHeaderInSectionをチェックできます。_isHeaderExpanded次に、トグル メソッドでセクションをリロードします。

于 2012-12-13T16:28:13.957 に答える