371

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

コード:

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

10 に答える 10

923

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

迅速:

tableView.tableFooterView = UIView()

Objective-C:

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

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

Interface Builderのプロのヒント:

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

于 2013-01-25T11:11:06.677 に答える
104

Swift 3構文:

tableView.tableFooterView = UIView(frame: .zero)

Swift構文:<2.0

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

Swift 2.0構文:

tableView.tableFooterView = UIView(frame: CGRect.zero)
于 2015-01-30T20:50:35.593 に答える
66

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

于 2014-04-18T10:17:39.893 に答える
17

Xcode6.1にswiftで実装

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

コードの2行目はプレゼンテーションに影響を与えません。これを使用して、非表示かどうかを確認できます。

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

于 2014-10-21T20:00:26.617 に答える
11

現在、コメントを追加することはできませんので、回答として追加してください。

@Andyの答えは適切であり、次のコード行でも同じ結果を得ることができます。

tableView.tableFooterView = [UIView new];

'new'メソッドはクラスに属し、。のメソッドをNSObject呼び出します。allocinitUIView

于 2013-12-31T12:24:32.690 に答える
8

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

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

viewDidLoadセクションとxcode6で警告が表示されました。私は「自己」を置きました。その前で、今では正常に動作します。したがって、私が使用する作業コードは次のとおりです。

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
于 2014-10-30T14:29:00.043 に答える
3

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

コード:

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

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

于 2016-02-29T10:05:56.877 に答える
2
override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

/// OR 

    self.tableView.tableFooterView = UIView()
}
于 2015-10-30T05:41:29.737 に答える
1

使用する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); 
    }
    

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

于 2015-12-08T12:59:58.873 に答える
0

以下の方法で:

- (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のナビゲーションバーの高さです。

于 2016-01-08T06:59:34.677 に答える