0

テーブル ビューのセルの高さを指定するには、delegate メソッドを使用します。

- (CGFloat) tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section

ただし、このメソッドはすべての行のセルの高さを要求します。それらの一部をデフォルトにしたい場合はどうすればよいですか?

セルの高さについてはUITableView#rowHeight、デリゲート メソッド内のデフォルトの行を返すことができますが、セクション ヘッダー/セルの一部 (すべてではない) をカスタマイズすることも必要です。

しかし、特にグループ化されたスタイルのテーブルビューの場合、テーブルビューからデフォルトを取得できません。誰か解決策がありますか?

ありがとう!

編集:あまり明確にしておらず申し訳ありません。実際、部分的にカスタマイズしたいのはセルの高さだけではなく、セクション ヘッダーのような他のもの (削除ボタンのスタイルなど、他にもあるかもしれません) も同様です。

デフォルトの動作を模倣しない解決策はありますか?

4

3 に答える 3

1

セルのデフォルトの高さは44です。したがって、条件が満たされない場合にセルを返すことができます。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

      if (YOUR_SPECIFIC_CONDITION) {  
     return 180.0;
     }
     return 44.0; 
 }

これがお役に立てば幸いです。

于 2012-07-04T11:13:38.160 に答える
1

すべての場合にデフォルトの動作を望まない場合でも、特殊化されていない場合のデフォルトの動作を模倣する必要があります。

ヘッダーの場合は、引き続き実装する必要があります

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;

その中で、変更したくないヘッダーのデフォルトの高さと、変更したいヘッダーの特殊なヘッダーの高さに答える必要があります。

同様に、

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*);

変更したくないセルのデフォルトの動作を模倣する必要があります。

必要に応じて、ストーリーボードを使用してこれらすべてを実行できます。それぞれに一意の識別子を持つ特殊なセルを作成し、それに伴うセルの高さを返します。このルートを使用すると、dequeueReuaableCellWithIdentifierを使用し、その識別子の高さの値を使用するだけで解決できる場合があります。考えている各セルに適した高さの一意のセル識別子を使用するだけです。

于 2012-07-14T02:01:02.207 に答える
0
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (indexPath.row == 0 && indexPath.section==0) 
    {  
        return 180.0;
    }
    else
    {
        return 44.0;
    }
}
于 2012-07-04T10:53:39.170 に答える