ios - tutorial - uitableviewcell swift
Cómo eliminar celdas vacías adicionales en TableViewController, iOS-Swift (14)
Hola, tengo un
TableViewController
con 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, ya que son inútiles.
¿Cómo oculto el resto de las celdas aparte de las dos celdas estáticas?
Abobe anwer tiene razón. Podemos lograr esto agregando
tableView.tableFooterView = UIView() // to remove extra cells in tableView
Agregue el siguiente código en sus funciones " override func viewDidLoad () " O "override func viewWillAppear (_ animated: Bool)" .
tblOutletName.tableFooterView = UIView ()
Basado en las respuestas anteriores en Swift .
tableView.tableFooterView = UIView(frame: .zero)
En swift 4 puede eliminar esas líneas innecesarias con un código simple de una línea:
//tableview refers to your UITableView
tableView.separatorStyle = .none
La configuración de
tableFooterView
debería eliminar celdas adicionales como vistas.
@IBOutlet weak var tableView: UITableView! {
didSet {
tableView.tableFooterView = UIView(frame: .zero)
}
}
Para agregar a esto, la razón por la cual establecer
tableFooterView
en
UIView()
elimina las filas es porque está configurando un objeto
UIView()
vacío en la propiedad.
Según la documentación de Apple:
var tableFooterView: UIView?
Por lo tanto, configurar un UIView vacío () no mostrará nada debajo de sus datos para esta propiedad.
Puede recuperar las filas vacías restableciendo
tableFooterView
al valor predeterminado, de esta manera:
tableView.tableFooterView = nil
Probé el tableview.tableFooterView = UIView () y no funcionó para mí. Estoy usando un TableViewViewCell personalizado, tal vez por eso.
Encontré un truco aunque. En mi func numberOfRowsInSection
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return yourArrayClass.count - 1
}
Y eso hace que mi UITableViewCell personalizado en blanco extra ya no se muestre. Por supuesto, 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.
Simplemente agregue:
tableView.tableFooterView = UIView()
Explicación:
Esto es totalmente válido y funciona perfectamente en Swift 3. Al configurar un objeto UIView () vacío en la propiedad, al establecer tableFooterView en UIView () se eliminan las filas.
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 utilizando el inspector de propiedades.
(Esto supone que no puede o no quiere usar la configuración de estilo de Grupo por alguna razón. De lo contrario, simplemente haga eso).
en su función
viewDidLoad()
agregue esta línea de código:
tableView.tableFooterView = UIView()
si desea eliminar filas para todas las
UITableViews
en su aplicación, simplemente agregue una extensión como esta:
Swift 4.0
extension UITableView {
override open func didMoveToSuperview() {
super.didMoveToSuperview()
self.tableFooterView = UIView()
}
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()
}
tableView.tableFooterView = UIView.init(frame: CGRect.zero)
Llame a este código dentro del método
viewWillAppear
.
Y va a funcionar