Voraussetzung:UITableViewCells unsichtbar
Ich habe eine Liste von UITableviewCell
von einem nib
geladen, die ich auf UITableview
präsentierte. Beim ersten Öffnen der UIViewController
werden alle Zellen korrekt angezeigt und funktionieren wie erwartet.
Ausgabe:
Wenn ich auf das übergeordnete Ebene zurück und öffnen Sie dann die UIViewController
wieder die UITableviewCell
sind ‚unsichtbar‘. Ich sage unsichtbar, weil ich mit einem Breakpoint in sehe, dass die Tabellenansicht alle Zellen lädt und die Zellen gültig sind.
Code:
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 13
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 40
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = (project?.sliderData.sliders[indexPath.row].view)! as UITableViewCell
print(cell.contentView.subviews.count)
if let left = cell.viewWithTag(2) as? UILabel {
left.text = "left"
}
if let middle = cell.viewWithTag(3) as? UILabel {
middle.text = "middle"
}
if let right = cell.viewWithTag(4) as? UILabel {
right.text = "right"
}
return cell
}
Screen Shot Bild
Erwartete Beobachtung:
Ich dachte, dass vielleicht die subviews
der cells
werden veröffentlicht, weil ich keine Bindungen zu ihnen in IB
habe. Um dies zu testen, bin ich Drucken der Anzahl der Unteransichten und Schreiben eines Textes auf die subview
labels
. Und alles scheint gut zu gehen, die Zellen sind geladen und die Etiketten sind da, aber die Zellen kommen einfach nicht.
Aber wenn ich scrollen die TableView
rauf und runter ein wenig, um einige Zellen aktualisiert diese Zellen erscheinen am oberen und unteren Rand der Ansicht, wie im Bild gezeigt.
Aus dem Screenshot sieht es so aus, als ob nur die obersten und untersten Zellen geladen werden, wenn Sie in der TableView blättern, aber die Zellen in der Mitte der Tabellenansicht nicht sichtbar sind. Ist es richtig? Haben Sie versucht, tableView setNeedsDisplay() aufzurufen, um die Tabellenansicht erneut zu zeichnen? –
Wenn ich die TableView scrollte, werden die Zellen angezeigt, die in den sichtbaren Bereich kommen, d. H. Die, die neu geladen werden, so dass durch Aufprallen der Oberseite einige Elemente sichtbar werden können. Ich habe versucht, setNeedsDisplay() bei ViewDidAppear hinzuzufügen, aber das hat keine Wirkung. – jotos
Warum registrieren Sie die Feder nicht und entfernen die Zellen auf die übliche Weise? – pbasdf