2009-10-02 9 views
7

Ich habe eine Ansicht, die unter einem Navigationscontroller angezeigt wird. Die Ansicht enthält eine Unteransicht im oberen Bereich und eine Tabellenansicht im unteren Bereich. Die Tabelle enthält möglicherweise Zeilen, die basierend auf Daten über die sichtbare Höhe hinausgehen. Wenn ich Zeilen unter der letzten sichtbaren Zeile habe, wenn ich die Ansicht nach oben scrolle, springt sie zurück, sie bleibt nicht dort. Gibt es eine Möglichkeit, dass es bleibt? Ich habe versucht, die Elternansicht eine Bildlaufansicht und das hat nicht geholfen. Meine Sicht ist von einem XIB.Tableview Scrolling springt zurück und verbirgt die unteren Zellen

Antwort

26

Klingt wie die Größe Ihres UITableView ist etwas größer als die Fläche auf dem iPhone-Bildschirm verfügbar. Dies könnte daran liegen, dass die Ansicht die Größe der Navigationsleiste nicht berücksichtigt hat. Als Test gehen Sie in den Interface Builder und machen Sie das UITableView viel kleiner, etwa die halbe Größe, so dass Sie oben und unten deutlich sehen können. Schau, ob du immer noch das gleiche Prellen hast.

Wenn die Größen korrekt sind, benötigt UITableView kein UIScrollView, um wie erwartet zu funktionieren. In der Tat, es gäbe nur wenige Gründe, von denen ich mir jetzt denken kann (abgesehen von horizontalen Scroll-Bildern), dass Sie eine UITableView in einem UIScrollView haben möchten.

+0

Vielen Dank für Ihre Beobachtung, die das Problem behoben. – Umark

+11

Großartig. Ich sehe aus Ihrer Geschichte, dass Sie keine der akzeptierten Antworten als offizielle Antworten auf Ihre Fragen auswählen. Vielleicht wussten Sie das nicht, aber links von den Antworten sehen Sie ein Häkchen. Wenn Sie darauf klicken, wählen Sie die Antwort aus, die die Lösung für Ihr Problem war. Das gibt mir einen gewissen Ruf, und für Leute, die dieselbe Frage haben, sehen sie, welche Antwort Ihnen geholfen hat. Wenn Sie eine Chance haben, klicken Sie bitte auf das Häkchen. Vielen Dank. – mahboudz

+0

Awesome, versuchte eine Menge Dinge, bevor dies mein Problem behoben. –

0

Setzen Sie in der obersten Ebene des View-Controllers in den Einstellungen für "Simulierte Metriken" die obere Leiste und/oder die untere Leiste (je nachdem, was in Ihrem View Controller angezeigt wird) auf "undurchsichtig". Ändern Sie dann die Größe der Tabellenansicht so, dass sie zwischen die Navigationsleiste und die Symbolleiste/Tableiste passt. Schließlich fügen zwei Einschränkungen:

  1. Top Space Top Leitfaden für das Layout
  2. Bottom Raum Bottom Leitfaden für das Layout

für mich sehr gut funktioniert, unabhängig von der Ausrichtung.

0

Wenn Sie nicht Storyboard verwenden, könnten Sie versuchen, die folgende (swift) Code:

tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0) 

self.view.addSubview(tableView) 

Wenn Sie eine Symbolleiste oder (wenn Sie einen TabBarController verwenden), werden Sie die neu einstellen müssen unten auch:

tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0) 

self.view.addSubview(tableView) 

Bitte beachten Sie, dass dies ein einfacher und "grober" Code ist. Sie können es bei Bedarf schöner machen :)

Verwandte Themen