Cómo eliminar celdas vacías adicionales en TableViewController, iOS - Swift


118

Hola, tengo un TableViewControllercon dos celdas estáticas, sin embargo, cuando se muestra, muestra las dos celdas estáticas y luego todas las demás celdas vacías para la vista de tabla. Sin embargo, no quiero mostrar esas celdas porque son inútiles. ¿Cómo oculto el resto de las celdas aparte de las dos celdas estáticas?

Respuestas:


403

en su viewDidLoad()función agregue esta línea de código:

tableView.tableFooterView = UIView()

4
¡Corto y eficaz! ¡Funcionó a la perfección!
yogipriyo

6
¿Qué significa esto? ¿Podría elaborar?
Jayprakash Dubey

Esta respuesta sigue siendo válida en Swift 3. Además, si establece el color de fondo de la vista de tabla igual que el color de fondo de la vista principal, parecerá que el pie de página se ha ido.
Micah Montoya

¿Existe una solución similar para NSTableView? No tiene tableFooterView.
ixany

SWIFT 3.0 funciona muy bien contableView.tableFooterView = UIView()
Marcelo Gracietti

19

Seleccione su UITableView, vaya al inspector de atributos y cambie el estilo a Agrupado.

ingrese la descripción de la imagen aquí


7

Para agregar a esto, la razón por la cual la configuración tableFooterViewde UIView()elimina las filas es porque está configurando un UIView()objeto vacío en la propiedad. Según la documentación de Apple:

var tableFooterView: UIView?

Por lo tanto, establecer un UIView () vacío no mostrará nada debajo de sus datos para esta propiedad.

Puede recuperar las filas vacías restableciendo tableFooterViewel valor predeterminado, así:

tableView.tableFooterView = nil

2
Lo siento, pero ¿no parece un truco?
AOY

2
No, esta es una forma completamente válida de hacerlo. Si quisiera establecer una tableFooterView personalizada, crearía una UIView personalizada, antes de establecerla en tableFooterView. Luego, restablecerlo a cero es simplemente devolverlo a su valor predeterminado.
brindis el

Veo. Gracias) Me parece un poco extraño porque soy nuevo en
Swift

6

La configuración tableFooterViewdebería eliminar las vistas extra de celdas.

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

3

También puede lograr esto en Storyboard simplemente arrastrando una vista al área de pie de página de la vista de tabla, y luego establezca su altura y color de fondo en 1 y borre respectivamente usando el inspector de propiedades.

(Esto supone que no puede o no desea usar la configuración de estilo de grupo por alguna razón. De lo contrario, simplemente hágalo).


3

Swift 4 Desarrollando la respuesta de HorseT, primero arrastre el control desde su Vista de tabla en su guión gráfico, a su clase de Controlador de vista y cree una salida llamada tableView.

@IBOutlet weak var tableView: UITableView!

Entonces, su viewDidLoad en su controlador de vista debería verse así:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}

3

Basado en las respuestas anteriores en rápido .

tableView.tableFooterView = UIView(frame: .zero)

2

si desea eliminar filas para todas UITableViewsen su aplicación, simplemente agregue una extensión como esta:

Swift 5.0

extension UITableView {

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

}

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

Llame a este código dentro del viewWillAppearmétodo. Y funcionará


1

Agregue el código de abajo en sus funciones " override func viewDidLoad () " o "override func viewWillAppear (_ animated: Bool)" .

tblOutletName.tableFooterView = UIView ()


0

Simplemente agregue:

tableView.tableFooterView = UIView()

Explicación:

Esto es totalmente válido y funciona perfectamente en swift 3.By Dado que está configurando un objeto UIView () vacío en la propiedad, al establecer tableFooterView en UIView () se eliminan las filas.


-2

Abobe anwer tiene razón. Podemos lograr esto agregando

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

-3

Probé tableview.tableFooterView = UIView () y no funcionó para mí. Estoy usando un TableViewViewCell personalizado, quizás por eso.

Aunque encontré un truco. En mi func numberOfRowsInSection

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

Y eso hace que mi UITableViewCell personalizada extra en blanco ya no se muestre. Por supuesto que es el extra en blanco. Lo probaré un poco más agregando más celdas. Como referencia, estoy usando Swift 3, Firebase, una clase de celda personalizada, dentro de la función cellForRowAt.


Esto no mostrará el último elemento de la matriz.
elarcoiris
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.