こんにちは、2つの静的セルを持つTableViewController
がありますが、表示されると、2つの静的セルが表示され、TableViewの他のすべての空のセルが表示されます。ただし、これらのセルは役に立たないので表示したくありません。 2つの静的セル以外の残りのセルを非表示にするにはどうすればよいですか?
viewDidLoad()
関数に次のコード行を追加します。
tableView.tableFooterView = UIView()
tableFooterView
を設定すると、ビューのような余分なセルが削除されます。
@IBOutlet weak var tableView: UITableView! {
didSet {
tableView.tableFooterView = UIView(frame: .zero)
}
}
これに追加するには、tableFooterView
をUIView()
に設定すると行が削除される理由は、プロパティに空のUIView()
オブジェクトを設定しているためです。 Appleドキュメントに従って:
var tableFooterView: UIView?
したがって、空のUIView()を設定すると、このプロパティのデータの下には何も表示されません。
次のようにtableFooterView
をデフォルト値にリセットすることにより、空の行を戻すことができます。
tableView.tableFooterView = nil
ストーリーボードでも、ビューをテーブルビューのフッター領域にドラッグするだけでこれを実現できます。その後、プロパティインスペクターを使用して、高さと背景色をそれぞれ1に設定し、クリアします。
(これは、何らかの理由でグループスタイル設定を使用できない、または使用したくないことを前提としています。
Swift 4 HorseTの答えを詳しく説明します。まず、ストーリーボードのテーブルビューからView Controllerクラスにドラッグを制御し、tableViewというアウトレットを作成します。
@IBOutlet weak var tableView: UITableView!
次に、View ControllerのviewDidLoadは次のようになります。
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.tableFooterView = UIView()
}
Swiftの上記の回答に基づいています。
tableView.tableFooterView = UIView(frame: .zero)
tableView.tableFooterView = UIView.init(frame: CGRect.zero)
viewWillAppear
メソッド内でこのコードを呼び出します。そして動作します
アプリのすべてのUITableViews
の行を削除する場合は、次のような拡張機能を追加します。
Swift 4.0
extension UITableView {
override open func didMoveToSuperview() {
super.didMoveToSuperview()
self.tableFooterView = UIView()
}
Swift 4では、単純な1行のコードでこれらの不要な行を削除できます。
//tableview refers to your UITableView
tableView.separatorStyle = .none
追加するだけです:
tableView.tableFooterView = UIView()
説明:
これは完全に有効であり、Swiftで完全に機能します。3.Byプロパティに空のUIView()オブジェクトを設定しているため、tableFooterViewをUIView()に設定すると行が削除されます。