web-dev-qa-db-ja.com

UITableViewで空のセルを削除する方法

私はいくつかのデータを持つ単純なUITableViewを表示しようとしています。テーブルの最後に空のセルが表示されないようにUITableViewの静的な高さを設定したいです。それ、どうやったら出来るの?

コード:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSLog(@"%d", [arr count]);
    return [arr count];
}
339
z22

次のように、(おそらくあなたのviewDidLoadメソッドで)高さゼロのテーブルフッタービューを設定します。

スイフト:

tableView.tableFooterView = UIView()

Objective-C:

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

表には表示するフッターがあると考えているため、明示的に要求したセル以外のセルは表示されません。

インターフェースビルダーの助言:

xib/Storyboardを使用している場合は、UIView(高さ0pt)をUITableViewの下部にドラッグするだけです。

847
Andy

Swift 3の構文:

tableView.tableFooterView = UIView(frame: .zero)

速い構文:<2.0

tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

Swift 2.0の構文:

tableView.tableFooterView = UIView(frame: CGRect.zero)
100
Dustin Williams

ストーリーボードでUITableViewを選択し、スタイルプロパティをPlainからGroupedに変更します。

61

Xcode 6.1上のSwiftで実装

self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true

2行目のコードはプレゼンテーションには影響しません。が隠れているかどうかを確認するために使用できます。

このリンクからの回答 UITableView Swiftで空のセルを非表示にできない

15
Leonardo Jorge

今のところコメントは追加できませんので回答として追加してください。

@ Andyの答えはよく、次のコードでも同じ結果が得られます。

tableView.tableFooterView = [UIView new];

'new'メソッドはNSObjectクラスに属し、allocに対してinitおよびUIViewメソッドを呼び出します。

11
Sahil

私はコードを試してみました:

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

viewDidLoadセクションとxcode6に警告が表示されました。私は「自己」を入れました。それの前でそして今それはうまく働きます。だから私が使用する作業コードは次のとおりです。

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
7
Filozof Abi

または、tableViewメソッドを呼び出してフッターの高さを1ポイントに設定すると、最後の行が追加されますが、フッターの背景色を設定して非表示にすることもできます。

コード:

func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
     return 1
}

最後の行のように見えます

3
KostiaZzz

UITableViewControllerを使う

受け入れられた解決策はTableViewCellの高さを変えるでしょう。これを修正するには、以下のステップを実行してください。

  1. 下記のコードスニペットをViewDidLoadメソッドに記述します。

    tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

  2. TableViewClass.mファイルに次のメソッドを追加します。

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        return (cell height set on storyboard); 
    }
    

それでおしまい。プロジェクトを構築して実行できます。

1
Manan Devani
override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

/// OR 

    self.tableView.tableFooterView = UIView()
}
1
A.G

下記の方法で:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
    }
    else
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
    }
    return [array count];
}

ここで、65はセルの高さ、66はUIViewControllerのナビゲーションバーの高さです。

0
Bharath Raj