Estoy tratando de averiguar cómo mostrar un mensaje dentro de una vista de tabla cuando la tabla está vacía. Me gustaría decir algo como: «no ha añadido ningún tipo de transacciones sin embargo. Pulse el botón agregar para empezar.». Obviamente, yo tendría que volver a este mensaje si el usuario elimina todas las células, también.

Este es el código que tengo actualmente en mi mesa de controlador de vista:

class ThirdViewController: UITableViewController {
override func viewWillAppear(animated: Bool) {
self.tableView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
//Uncomment the following line to preserve selection between presentations
    //self.clearsSelectionOnViewWillAppear = false

//Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    //self.navigationItem.rightBarButtonItem = self.editButtonItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
//#pragma mark - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
//#warning Potentially incomplete method implementation.
    //Return the number of sections.
    return 1
}
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
//#warning Incomplete method implementation.
    //Return the number of rows in the section.
    return arrayObject.paymentsArray().count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell:CustomTransactionTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomTransactionTableViewCell
cell.paymentNameLabel.text = (arrayObject.paymentsArray().objectAtIndex(indexPath.row)) as String
cell.costLabel.text = (arrayObject.costArray().objectAtIndex(indexPath.row)) as String
cell.dateLabel.text = (arrayObject.dateArray().objectAtIndex(indexPath.row)) as String
if arrayObject.imageArray().objectAtIndex(indexPath.row) as NSObject == 0 {
cell.paymentArrowImage.hidden = false
cell.creditArrowImage.hidden = true
} else if arrayObject.imageArray().objectAtIndex(indexPath.row) as NSObject == 1 {
cell.creditArrowImage.hidden = false
cell.paymentArrowImage.hidden = true
}
return cell
}
override func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
return true
}
override func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
if let tv=tableView {
arrayDataCost.removeObjectAtIndex(indexPath!.row)
arrayDataImage.removeObjectAtIndex(indexPath!.row)
arrayDataPayments.removeObjectAtIndex(indexPath!.row)
arrayDataDate.removeObjectAtIndex(indexPath!.row)
tv.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
}
}

Cualquier ayuda sería muy apreciada!

OriginalEl autor user3746428 | 2014-07-24

5 Comentarios

  1. 10

    Puede establecer la backgroundView a un UILabel (O algún punto de vista que usted hizo cuando la tabla está vacía

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if self.numberOfRow == 0{
    var emptyLabel = UILabel(frame: CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height))
    emptyLabel.text = "No Data"
    emptyLabel.textAlignment = NSTextAlignment.Center
    self.tableView.backgroundView = emptyLabel
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    return 0
    } else {
    return self.numberOfRow
    }
    }

    algo como esto funciona muy bien para mí

    Por alguna razón, la etiqueta todavía aparece incluso cuando matriz.contar > 0.
    ¿Sabes por qué se muestra la etiqueta, incluso si el recuento no es 0?
    Usted debe hacer en formato tableview.backgroundView = nil en los demás

    OriginalEl autor Putt Potsawee

  2. 3
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    var numOfSection: NSInteger = 0
    if array.count > 0
    {
    self.tableView.backgroundView = nil
    numOfSection = 1
    }
    else
    {
    var noDataLabel: UILabel = UILabel(frame: CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height))
    noDataLabel.text = "No Data Available"
    noDataLabel.textColor = UIColor(red: 22.0/255.0, green: 106.0/255.0, blue: 176.0/255.0, alpha: 1.0)
    noDataLabel.textAlignment = NSTextAlignment.Center
    self.tableView.backgroundView = noDataLabel
    }
    return numOfSection
    }

    OriginalEl autor Sanjay Mali

  3. 1

    Anular su viewDidLoad() método como este:

    override func viewDidLoad() {
    super.viewDidLoad()
    self.view.addSubview(self.yourLabel);
    if arrayObject.paymentsArray().count > 0 {
    self.tableView.hidden = NO;
    self.yourLabel.hidden = YES;
    } else {
    self.tableView.hidden = YES;
    self.yourLabel.hidden = NO;
    }
    }
    Gracias, pero estoy recibiendo el error ThirdViewController no tiene un miembro llamado ‘addSubView’. También, ¿cómo puedo añadir la etiqueta a la vista controlador? Sólo puedo colocarlo dentro de la célula.
    He actualizado mi respuesta. auto.vista.addSubview(auto.yourLabel); método agrega la etiqueta de yourSomeViewController
    Has probado a poner la etiqueta bajo el formato tableview por lo que se vuelve visible cuando el formato tableview se oculta?

    OriginalEl autor Shamsiddin

  4. 1

    Puede utilizar este método. No hay límite de funcionamiento

    Swift3

        if tableView.visibleCells.isEmpty{
    //tableview is not data 
               print("can not found data")
    }else{
    //do somethings
    
    }

    OriginalEl autor J.Arji

  5. 0

    Puede ocultar el formato tableview y mostrar la etiqueta, o mostrar algún tipo de animación que reduce el alfa de una de las vistas de un «fade» efecto.

    Lo que yo veo. Mi problema ahora es que no sé cómo obtener la etiqueta en el controlador de vista? No puedo poner encima de la vista de tabla, sólo me permite colocarlo en la celda que yo, obviamente, no quieren hacer.

    OriginalEl autor user3871275

Dejar respuesta

Please enter your comment!
Please enter your name here