2016-12-15 7 views
2

Ich habe ein tableview bewegen, die aufweist:Swift wie tableview backGroundView Label

1-) Abschnitt 1 header

TableView Cell 

2-) Abschnitt 2 header

Tableview Cell 

3-) Abschnitt 3

(n rows that contains list of records) 

Meine Tabellenansicht hat 3 Sektion. In Abschnitt 3 listet ich Datensätze auf. Wenn es keinen Datensatz gibt, zeige ich ein Etikett mit der Aufschrift "No Records Found".

My Table View Picture

Aber mein Problem ist, ich mag das Etikett nach unten in der Tableview bewegen (auf der „+“ Ansicht) Wie kann ich dieses Etikett bewegen. Das ist mein SWIFT-Code

func setNoDataInfoIfAbsenceNotExists() 
{ 
    let noDataLabel : UILabel = UILabel() 
    noDataLabel.frame = CGRectMake(0, 0 , (self.tableView.bounds.width), (self.tableView.bounds.height)) 
    noDataLabel.text = "No Records Found" 
    noDataLabel.textColor = UIColor.blackColor() 
    noDataLabel.textAlignment = .Center 
    self.tableView.backgroundView = noDataLabel 
    self.tableView.separatorStyle = .None 
} 
+0

, warum Sie nicht Storyboard stattdessen verwenden und die Einschränkung ändern ??? –

+0

Was meinst du mit "+"? Willst du Label-Subview von + view oder von + du willst das Label verschieben ??? –

+0

nodataLabel.frame = (+ View) .frame try this ... –

Antwort

1

Fügen Sie diese Zeile

tableView.tableFooterView = tableViewFooter 

Sie so führen bekam. Siehe Ansicht in blauer Farbe unten in Textansicht .

Ihre Ansicht bleibt einfach bei Ihrer Tischhöhe und Sie haben Ihre Ansicht immer am Ende der Tabellenansicht.

enter image description here

+0

Ja das ist Arbeit für mich. Vielen Dank! – OmerArslan

2

Sie machen Rahmen noDataLabel Größe der Tabellenansicht und Text zu sein Zentrum in diesem Rahmen ist.

Sie sollten die Rahmen kleiner (versuchen CGRectMake (0, 0, 0, 0) und nach Text Aufruf noDataLabel.sizeToFit() Einstellung) versuchen, dann ist es noDataLabel.center.x und noDataLabel.center.y mit positionieren.

Versuchen:

noDataLabel.text = "No Records Found" 
noDataLabel.sizeToFit() 
noDataLabel.center.x = tableView.center.x 
noDataLabel.center.y = tableView.frame.height - noDataLabel.frame.height 
+0

noDataLabel.text = "Keine Aufzeichnungen gefunden" noDataLabel.sizeToFit() noDataLabel.center.x = tableView.center.x noDataLabel.center.y = tableView.frame.height -noDataLabel.frame.height ich füge diese Zeilen hinzu, aber das Label ist immer noch am selben Ort – OmerArslan

+0

Hast du es versucht: noDataLabel.frame = CGRectMake (0, 0, 0, 0)? –

+0

Lassen Sie noDataLabel: UILabel = UILabel() noDataLabel.frame = CGRectMake (0, 0, 0,0) noDataLabel.text = "Keine Aufzeichnungen gefunden" noDataLabel.sizeToFit() noDataLabel.center.x = tableView.center.x noDataLabel.center.y = tableView.frame .height - noDataLabel.frame.height ja ich habe versucht – OmerArslan

0

neue Zelle erstellen, die Beschriftung mit dem Text „Keine Ergebnisse“ enthalten (oder was auch immer Sie brauchen). In Ihrem Code:

innen numberOfRowsInSection:

//other part of your implementation 
if indexPath.section == 3 { 
    return dataArray.isEmpty ? 1 : dataArray.count 
} 

innen cellForRowAtIndexPath Methode:

// other part of your implementation 
if indexPath.section == 3 { 
    guard !dataArray.isEmpty else { 
     return NoDataCell() // replace with your implementation 
    }   return YourDataCell() 
} 
+0

Aber in diesem Fall wird "keine Datenzelle" auswählbar sein und sich wie eine Zelle verhalten. Ich denke, die Zelle als Fußzeile zu benutzen ist eine bessere Idee. Ist es nicht? – OmerArslan