2016-10-04 8 views
0

ich meine Tabellenansicht programmatisch mit dem folgenden erstellen:UITableView programmatisch nicht angezeigt gemacht

lazy var myTableView: UITableView = 
{ 
    let tableView = UITableView() 
    tableView.delegate = self 
    tableView.dataSource = self 
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") 
    return tableView 
}() 

Ich füge es dann als Subview meiner Ansicht in viewDidLoad:

view.addSubview(myTableView) 

Dann in meiner Methode wo ich alle UI-Einschränkungen eingerichtet habe, lege ich es mit den folgenden:

myTableView.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active = true 
myTableView.topAnchor.constraintEqualToAnchor(temporaryContainerView.bottomAnchor).active = true 

Schließlich , Hier sind meine Delegierten/Datenquelle Methoden:

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 5 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell! 
    cell.textLabel?.text = "Test" 

    return cell 
} 

Wenn ich Stützpunkte auf den oben genannten Methoden setzen, scheint es, als ob das numberOfRowsInSection oft genannt wird, aber cellForRowAtIndexPath nicht wird überhaupt bezeichnet.

Warum erscheint es nicht?

+0

Es Art von klingt wie Ihre Tableview richtig angeordnet werden soll, zu erkennen, dass keine der Zellen tatsächlich auf dem Bildschirm ist, die (wenn true) würde erklären, warum cellForRow nicht aufgerufen wird. Ich sehe nur Einschränkungen für Breite und Tiefe - was ist mit einem Attribut top/height? Der Frame ist standardmäßig auf 0,0,0,0 gesetzt. Ich nehme an, wenn Sie nicht ausdrücklich eine Höhe oder eine obere und untere Einschränkung festlegen, hat er eine Höhe von 0. Sie können dies überprüfen, indem Sie in Ihrer numberOfRows-Delegate-Methode einen Haltepunkt setzen , und wenn es eingefroren ist, drucken Sie den Rahmen der Tabellenansicht aus (p myTableView.frame) – creeperspeak

Antwort

0

Ich hatte die centerXAnchor Einschränkung auf meinem Tableview zu setzen für sie zusammen mit translatesAutoresizingMaskIntoConstraints = false

Verwandte Themen