Я создаю мой вид таблицы программно с помощью следующих действий:UITableView программно сделал не отображается
lazy var myTableView: UITableView =
{
let tableView = UITableView()
tableView.delegate = self
tableView.dataSource = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
return tableView
}()
Я затем добавить его как подвид на мой взгляд, в viewDidLoad:
view.addSubview(myTableView)
Тогда в моем методе где я устанавливаю все ограничения пользовательского интерфейса, я размещаю его следующим образом:
myTableView.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active = true
myTableView.topAnchor.constraintEqualToAnchor(temporaryContainerView.bottomAnchor).active = true
Окончание , Вот мои методы делегата/DataSource:
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
}
Когда я ставлю точки останова на указанных выше способов, это, кажется, как будто что numberOfRowsinSection вызывается много раз, но cellForRowAtIndexPath не вызывается вообще.
Почему он не появляется?
Это отчасти звучит как Tableview признает, что ни одна из ячеек не являются на самом деле на экране, которые (если true) объясняет, почему cellForRow не вызывается. Я вижу только ограничения для width & bottom - как насчет атрибута top/height? Кадр по умолчанию равен 0,0,0,0, поэтому я подозреваю, что вы явно не устанавливаете высоту или верхнее и нижнее ограничение, оно имеет высоту 0. Вы можете проверить это, поставив точку останова в свой метод делегирования numberOfRows , и когда он заморожен, распечатайте рамку таблицы view (p myTableView.frame) – creeperspeak