iOSのTableViewControllerで余分な空のセルを削除する方法-Swift


118

こんにちは私はTableViewController2つの静的セルを持つを持っていますが、表示すると、2つの静的セルが表示され、次にテーブルビューの他のすべての空のセルが表示されます。ただし、それらのセルは役に立たないため、表示したくありません。2つの静的セルから離れた残りのセルを非表示にするにはどうすればよいですか?

回答:


403

viewDidLoad()関数に次のコード行を追加します。

tableView.tableFooterView = UIView()

4
短くて効果的!魅力のように働いた!
yogipriyo

6
これは何を意味するのでしょうか?詳しく説明してもらえますか?
Jayprakash Dubey

この回答はSwift 3でも引き続き有効です。また、テーブルビューの背景色をメインビューの背景色と同じに設定すると、フッターがなくなったように見えます。
Micah Montoya

同様の解決策はありNSTableViewますか?ありませんtableFooterView
ixany 2016年

SWIFT 3.0は、次の場合に最適に動作しますtableView.tableFooterView = UIView()
Marcelo Gracietti 2016

19

UITableViewを選択し、属性インスペクターに移動して、スタイルをGroupedに変更します。

ここに画像の説明を入力してください


7

これに追加して、行tableFooterViewUIView()削除するように設定する理由はUIView()、プロパティに空のオブジェクトを設定しているためです。アップルのドキュメントによると:

var tableFooterView: UIView?

したがって、空のUIView()を設定しても、このプロパティのデータの下には何も表示されません。

次のtableFooterViewようにデフォルト値にリセットすることで、空の行を戻すことができます。

tableView.tableFooterView = nil

2
すみませんが、ハックのように見えませんか?
AOY、2016年

2
いいえ、これは完全に有効な方法です。カスタムtableFooterViewを設定する場合は、tableFooterViewに設定する前に、カスタムUIViewを作成します。次に、それをnilにリセットすると、単にデフォルト値に戻ります。
乾杯

そうですか。ありがとう)私は
Swiftを初めて使用

6

を設定すると、tableFooterViewビューのような余分なセルが削除されます。

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }

3

ストーリーボードでも、ビューをテーブルビューのフッター領域にドラッグし、プロパティインスペクターを使用して高さと背景色をそれぞれ1とクリアに設定することで、これを実現できます。

(これは、なんらかの理由でグループスタイル設定を使用できない、または使用したくないことを前提としています。それ以外の場合は、それを行うだけです。)


3

Swift 4 HorseTの答えを詳しく説明します。まず、ストーリーボードのテーブルビューからビューコントローラークラスにドラッグを制御し、tableViewというアウトレットを作成します。

@IBOutlet weak var tableView: UITableView!

次に、View ControllerのviewDidLoadは次のようになります。

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}


2

UITableViewsアプリのすべての行を削除する場合は、次のような拡張機能を追加します。

Swift 5.0

extension UITableView {

override open func didMoveToSuperview() {
    super.didMoveToSuperview()
    self.tableFooterView = UIView()

}

1
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

viewWillAppearメソッド内でこのコードを呼び出します。そしてうまくいく


1

override func viewDidLoad()」または「override func viewWillAppear(_ animated:Bool)」関数に以下のコードを追加します。

tblOutletName.tableFooterView = UIView()


0

単に追加:

tableView.tableFooterView = UIView()

説明:

これは完全に有効で、迅速な3.Byで完全に機能します。空のUIView()オブジェクトをプロパティに設定しているため、tableFooterViewをUIView()に設定すると行が削除されます。


-2

アボベアンワーはそうです。これを追加するには、

tableView.tableFooterView = UIView() // to remove extra cells in tableView

-3

tableview.tableFooterView = UIView()を試しましたが、うまくいきませんでした。私はカスタムTableViewViewCellを使用しています。おそらくそれが理由です。

私はハックを見つけました。私のfuncでnumberOfRowsInSection

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return yourArrayClass.count - 1
}

そして、それにより、余分な空白のカスタムUITableViewCellが表示されなくなります。もちろんその余分な空白の1つです。セルを追加して、さらにテストします。参考までに、カスタムセルクラスであるSwift 3、FirebaseをcellForRowAt関数内で使用しています。


これは配列の最後の項目を表示しません。
elarcoiris
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.