У меня есть довольно стандартный UITableView, который заполняется через пользовательскую ячейку. Эта ячейка - это просто образ и ярлык на данный момент. Я не могу, для жизни меня, заставить его изменить его самостоятельно.Не удается заставить UITableViewAutomaticDimension работать правильно
Когда я включаю UITableViewAutomaticDimension, я теряю возможность заполнять свои данные в дополнение к неправильным макетам.
Без UITableViewAutomaticDimension данные отображаются правильно.
Я я с помощью SnapKit для обработки ограничений и Meteor/SwiftDDP для обработки данных, но есть еще один UITableView в проекте, который, кажется, работает правильно
ViewController
class CommentViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var commentTable:UITableView!
var comments:MeteorCollection<Comment>!
init() {
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
comments = MeteorCollection<Comment>(name: "comments")
createView()
Meteor.subscribe("postsComments", params: [["postId": self.source!.id!]]) {}
}
func createView() {
let contentTableView = UITableView(frame: content.frame)
content.addSubview(contentTableView)
contentTableView.backgroundColor = UIColor.clearColor()
self.commentTable = contentTableView
contentTableView.delegate = self
contentTableView.dataSource = self
contentTableView.snp_makeConstraints { (make) -> Void in
make.top.equalTo(content)
make.left.equalTo(content)
make.right.equalTo(content)
make.height.equalTo(content).inset(65)
}
contentTableView.rowHeight = UITableViewAutomaticDimension
contentTableView.estimatedRowHeight = 350
}
}
КомментарийTableViewDelegate.swift
import UIKit
extension CommentViewController {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.comments.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(CommentTableViewCell.reuseIdentifier, forIndexPath: indexPath) as UITableViewCell
cell.setNeedsUpdateConstraints()
cell.updateConstraintsIfNeeded()
if let card = cell as? CommentTableViewCell {
let item = self.comments.sorted[indexPath.row]
card.populate(item)
}
return CommentTableViewCell()
}
func reloadTableView() {
self.commentTable.reloadData()
}
}
Пример моей искаженном беспорядок, когда не с помощью UITableViewAutomaticDimension
пример моего искаженного беспорядок при использовании UITableViewAutomaticDimension
установите contentTableView.estimatedRowHeight = 1 // оценочного значения, если меньше, то работу должным образом –