Як видалити зайві порожні комірки в TableViewController, iOS - Swift


118

Привіт, у мене є TableViewControllerдві статичні комірки, однак, коли вони відображаються, вони показують дві статичні комірки, а потім всі інші порожні комірки для подання таблиці. Однак я не хочу відображати ці клітини як непотрібні. Як приховати решту комірок крім двох статичних комірок?

Відповіді:


403

у своїй viewDidLoad()функції додайте цей рядок коду:

tableView.tableFooterView = UIView()

4
Короткий та ефективний! Працювали як шарм!
йогіпріо

6
Що це означає? Не могли б Ви розробити?
Джайпракаш Дюбі

Ця відповідь залишається дійсною в Swift 3. Також якщо встановити колір тла перегляду таблиці таким же, як і колір тла основного перегляду, він зробить вигляд, ніби нижній колонтитул.
Міхей Монтоя,

Чи є подібне рішення для NSTableView? Він не має tableFooterView.
ixany

SWIFT 3.0 чудово працює зtableView.tableFooterView = UIView()
Марсело Грачіетті

19

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

введіть тут опис зображення


7

Щоб додати до цього, причина, чому налаштування tableFooterViewдля UIView()видалення рядків, полягає в тому, що ви встановлюєте порожній UIView()об’єкт у властивість. Відповідно до документації Apple:

var tableFooterView: UIView?

Тому встановлення порожнього UIView () не відображатиме нічого нижче ваших даних для цього ресурсу.

Ви можете повернути порожні рядки, tableFooterViewвстановивши значення за замовчуванням, наприклад:

tableView.tableFooterView = nil

2
Вибачте, але це не схоже на злом?
AOY

2
Ні, це цілком справедливий спосіб зробити це. Якщо ви хочете встановити власну таблицюFooterView, ви повинні створити користувацький UIView, перш ніж встановити його на tableFooterView. Потім скидання його до нуля - це просто повернення його до значення за замовчуванням.
тости

Я бачу. Дякую) Це виглядає для мене трохи дивно, тому що я новачок швидко
AOY

6

Якщо встановити значок, tableFooterViewслід видалити зайву клітинку, як-от видами.

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

3

Цього можна досягти також у «Дошці зображень», просто перетягнувши подання у область нижнього колонтитула подання таблиці, а потім встановіть його висоту та колір тла на 1 та очистіть відповідно за допомогою інспектора властивостей.

(Це передбачає, що ви або не можете або не хочете просто використовувати налаштування стилю групи з якоїсь причини. Інакше просто зробіть це.)


3

Swift 4 Розробляючи відповідь HorseT, спочатку керуйте перетягненням із таблиці View на дошці розкадрування, до класу View Controller та створіть розетку під назвою tableView.

@IBOutlet weak var tableView: UITableView!

Тоді ваш viewDidLoad у контролері перегляду повинен виглядати приблизно так:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}


2

якщо ви хочете видалити рядки для всіх UITableViews у вашій програмі, просто додайте розширення на зразок цього:

Швидкий 5.0

extension UITableView {

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

}

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

Викличте цей код всередині viewWillAppearметоду. І буде працювати


1

Додайте нижній код у вашій функції " переосмислити функцію переглядуDidLoad () " Або "замінити функцію переглядуWillAppear (_ анімовані: Bool)" .

tblOutletName.tableFooterView = UIView ()


0

Просто додайте:

tableView.tableFooterView = UIView()

Пояснення:

Це цілком дійсно і прекрасно працює у швидкості 3.By Оскільки ви задаєте порожній об’єкт UIView () для властивості, Setting tableFooterView to UIView () видаляє рядки.


-2

Авебе передня справа. Ми можемо досягти цього, додавши

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

-3

Я спробував tableview.tableFooterView = UIView (), і це не працювало для мене. Я використовую користувальницький TableViewViewCell, можливо, саме тому.

Я знайшов хак-тхо. У моєму функціональному номеріOfRowsInSection

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

І це робить мій додатковий порожній спеціальний UITableViewCell більше не відображатися. Звичайно, це додаткове порожнє. Я ще тестую його, додавши більше клітин. Для довідки я використовую Swift 3, Firebase, спеціальний клас комірок, всередині функції cellForRowAt.


Це не відображатиме останній елемент у масиві.
elarcoiris
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.