it-roy-ru.com

Как убрать лишние пустые ячейки в TableViewController, iOS - Swift

Привет у меня есть TableViewController с двумя статическими ячейками, однако при отображении он показывает две статические ячейки, а затем все остальные пустые ячейки для таблицы. Однако я не хочу отображать эти ячейки, поскольку они бесполезны. Как скрыть остальные ячейки отдельно от двух статических ячеек?

80
Stephen Fox

в вашей функции viewDidLoad() добавьте следующую строку кода:

tableView.tableFooterView = UIView()
296
HorseT

Выберите свой UITableView, перейдите в инспектор атрибутов и измените стиль на Сгруппированный.

 enter image description here

8
bakalolo

Чтобы добавить к этому, причина, по которой установка tableFooterView в UIView() удаляет строки, заключается в том, что вы устанавливаете пустой объект UIView() для свойства. Согласно документации Apple:

var tableFooterView: UIView?

Поэтому установка пустого UIView () ничего не отобразит под вашими данными для этого свойства.

Вы можете вернуть пустые строки, сбросив tableFooterView к значению по умолчанию, например, так:

tableView.tableFooterView = nil
5
toast

Установка tableFooterView должна удалить лишние ячейки, такие как представления.

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

Этого также можно добиться в раскадровке, просто перетащив представление в нижний колонтитул табличного представления, а затем установив его высоту и цвет фона на 1 и очистив соответственно с помощью инспектора свойств.

(Это предполагает, что вы или не можете или не хотите просто использовать настройку стиля группы по какой-то причине. В противном случае просто сделайте это.)

2
quickthyme

Swift 4 Прорабатывая ответ HorseT, сначала перетащите элемент управления из своего табличного представления в раскадровке в класс View Controller и создайте выход с именем tableView. 

@IBOutlet weak var tableView: UITableView!

Затем ваш viewDidLoad в вашем контроллере вида должен выглядеть примерно так:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}
2
elarcoiris
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

Вызовите этот код внутри метода viewWillAppear. И будет работать

1
Mannopson

На основе приведенных выше ответов в Swift .

tableView.tableFooterView = UIView(frame: .zero)
0
rizwan

В Swift 4 вы можете удалить эти ненужные строки с помощью простого однострочного кода:

//tableview refers to your UITableView
tableView.separatorStyle = .none
0
TheSwiftGuy77

Просто добавьте:

tableView.tableFooterView = UIView()

Объяснение:

Это полностью верно и отлично работает в Swift 3.By Поскольку вы устанавливаете пустой объект UIView () для свойства, установка tableFooterView в UIView () удаляет строки.

0
Tejas

если вы хотите удалить строки для всех UITableViews в вашем приложении, просто добавьте расширение следующим образом:

Swift 4.0

extension UITableView {

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

}
0
mkhoshpour