web-dev-qa-db-ja.com

iPhone UITableView:グループスタイルテーブルのセクション間のスペースを削除する方法?

私は10個のセクションがあり、すべてヘッダービューはあるがセルはないテーブルビューを作成しています。つまり、簡単に言うと、私のテーブルビューには10個のヘッダービューのみが表示されます。どのセクションにもセルはありません。これを行うと、セクションのヘッダービューの間にスペースができます。そのスペースを削除したいと思います。それは可能ですか?これを実現するためのヒントや回避策を教えてください。

データソースメソッドは次のとおりです。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   return 10;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  return 0;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UILabel * label = [[UILabel alloc] init];
    label.backgroundColor = [UIColor grayColor];
    return label;
}

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

これが出力のスクリーンショットです。 enter image description here

私がこのようにやっているのには、少し複雑な理由があります。それは、筆記では説明できないからです。私がやりたいのは、セクションのヘッダービューにスペースがないことです。前もって感謝します。

18
Bharat Jagtap

これを試して..

   self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}

また、なしとしてテーブルセパレーターがあります。

50
RAJA

0tableView:heightForFooterInSection:を返すと、デフォルト値が返されます(おそらく10.0)。トリッキーですが、フッターを削除するためにCGFLOAT_MINの代わりに0を使用できます。

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

更新:

Swift

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}
22
MMiroslav

次のコードで試してください

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0.25; // as for you need
}

デリゲートメソッドに従って管理することもできます

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

上記の2つの方法で管理できる短いです。

3
iPatel

グループ化されたスタイルのテーブルビューにはデフォルトのフッターがあります。フッターをカスタマイズして上書きする必要もあります

または

無地のスタイルを試してみてください。

typedef enum {
   UITableViewStylePlain,
   UITableViewStyleGrouped
} UITableViewStyle;
3
lancy

インターフェース内で直接実行できます。フッターの高さを次のように1に設定する必要があります。

enter image description here

3
Ugo Marinelli

テーブルビュースタイルをグループ化からプレーンに変更します。これは私の問題を解決しました。

1
user2179059

だから私は賛成投票はできませんが、返信を投稿することはできます

実際、この方法に対する正しい答えは

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     return CGFLOAT_MIN;
}
1
Travis Delly

メソッドheightForHeaderInSectionを使用する必要があります。たとえば、異なるセクションに応じて変更することもできます。一部のセクションでは、より多くの距離を表示する必要がある場合があり、一部では、ギャップを表示したくない場合があります。このような場合、0.000001fのCGFLOAT_MINを使用できます。例として、ヘッダーの高さが異なるセクションを使用する方法

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0 || section == 2)
    {
        return 55.0;
    }
    else
    {
        return CGFLOAT_MIN;
    }
}

それがあなたを助けることを願っています。

0
Aks