2017-07-19 2 views
0

Ich bin ein schneller Anfänger und bin auf das folgende Problem gestoßen.UITableView scrollt nicht innerhalb eines UIView Containers

Ich zeige ein UITableView innerhalb eines UIView-Containers ganz gut.

Das Problem ist, dass die Tabelle wird NICHT Bildlauf nach oben/unten.

Ich habe Threads zu einem etwas ähnlichen Thema gelesen und es zeigt auf die vollständige Tabelle angezeigt wird korrekt, aber es wird durch die Größe des UIView-Container abgeschnitten, so dass es nicht erforderlich, scrollen, wie alle Zellen werden gezeigt.

Also meine Frage ist, Wie ändere ich die Höhe meiner Tabelle innerhalb der Grenzen des View-Containers, so dass es scrollbar wird?

enter image description here

Dies ist mein View-Controller-Code:

ich einen Zugang zum UIView hier erklären

@IBOutlet weak var viewOrdersDrinks: UIView! 

Dann rufe ich diese Funktion in meinem viewDidLoad die die UITableView in den Lasten UIView als Unteransicht

func loadOrdersDrinks(){ 

    let listDrinks: CompletedOrderedDrinksListTableViewController = CompletedOrderedDrinksListTableViewController (nibName: "CompletedOrderedDrinksListTableViewController", bundle: nil) 

    self.addChildViewController(listDrinks) 
    self.viewOrdersDrinks.addSubview(listDrinks.view) 

} 
+0

Haben Sie überprüfen 'contentSize' Ihrer Tableview? – Codus

+0

was meinst du genau? - Im Moment ist die Tabelle einfach ein Platzhalter, der in jeder Zelle 8 Zellen mit einem statischen Label anzeigt. – RIG

+0

Können Sie einen Screenshot bereitstellen? – Codus

Antwort

0

allererst Sie die Tableview zu Automatische Anordnung müssen die Eltern ausfüllen und hier ist eine UIView-Erweiterung für diese:

extension UIView { 
    func anchorToSuperview() { 
     guard let superview = self.superview else { return } 
     self.translatesAutoresizingMaskIntoConstraints = false 
     self.topAnchor.constraint(equalTo: superview.topAnchor).isActive = true 
     self.bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true 
     self.leadingAnchor.constraint(equalTo: superview.leadingAnchor).isActive = true 
     self.trailingAnchor.constraint(equalTo: superview.trailingAnchor).isActive = true 
    } 
} 

Eine andere Sache ist zu erwähnen, dass die tableViewController als Kind neben Hinzufügen Sie müssen andere API-Aufrufe beachten, die sich auf das Hinzufügen von untergeordneten Ansichtscontrollern beziehen. Hier ist der Verweis auf die documentation.

Alles in allem richtig die Tableview für hinzufügen, sollten Sie den Code am Ende wie folgt aussehen:

func loadOrdersDrinks() { 
    let listDrinks: CompletedOrderedDrinksListTableViewController = CompletedOrderedDrinksListTableViewController (nibName: "CompletedOrderedDrinksListTableViewController", bundle: nil) 

    self.addChildViewController(listDrinks) 
    self.viewOrdersDrinks.addSubview(listDrinks.tableView) 
    self.listDrinks.tableView.anchorToSuperview() 
    self.listDrinks.didMove(toParentViewController: self) 
} 
+0

Vielen Dank für Ihre Vorschläge, obwohl ich versucht habe, es mit meinem Code zu integrieren, aber ich bekomme eine CompletedOrderDetailsViewController hat keine Mitglied ListDrinks Fehler bei diesen Zeilen 'self.listDrinks.view.anchorToSuperview() selb.listdrinks.didMove (toParentViewController: self) ' – RIG

+0

meine tableViewController Aufrufe auf' Erweiterung CompletedOrderedDrinksListTableViewController erweitern: UIView 'gibt eine' Kann nicht von Klasse UIView erben ' – RIG

+0

nur um klar zu sein, ich habe eine TableViewController, die ich in eine UIView in einem separaten ViewController verwaltet werden soll. – RIG

Verwandte Themen