TL;DR; Автоматические ограничения, по-видимому, разбиваются на push segue и возвращаются к просмотру для пользовательских ячеек
Изменить. Я представил проект примера github, который показывает ошибку, которая возникает https://github.com/Matthew-Kempson/TableViewExample.git
Я создаю приложение, которое требует, чтобы метка заголовка пользовательского UITableCell позволяла изменять строки, зависящие от длины заголовка сообщения. Ячейки загружаются в представление правильно, но если я нажимаю на ячейку, чтобы загрузить сообщение в push-сеге на представление, содержащее WKWebView, вы можете видеть, как показано на снимке экрана, ячейки немедленно перемещаются в неправильные позиции. Это также просматривается при загрузке представления обратно через кнопку возврата в UINavigationController.
В этом конкретном примере я нажал на самую концевую ячейку, с названием "Два приятеля, которые я снял в Париже", и все загрузилось правильно. Затем, как показано на следующем снимке экрана, все камеры движутся вверх по неизвестным причинам на фоне загрузки второго представления. Затем, когда я загружаю представление назад, вы можете видеть, что экран слегка сдвинулся вверх, и я не могу прокручивать его ниже, чем показано. Это кажется случайным, как и при других тестах, когда изображение загружается обратно, в нижней ячейке отсутствует пустое пространство, которое не исчезает.
Я также включил изображение, содержащее ограничения, которые имеют ячейки.
Изображения (мне нужно больше репутации, чтобы обеспечить изображения в этом вопросе, видимо, чтобы они были в этом альбоме imgur): http://imgur.com/a/gY87E
Мой код:
Метод в пользовательской ячейке, чтобы позволить ячейке правильно изменять размер представления при вращении:
override func layoutSubviews() {
super.layoutSubviews()
self.contentView.layoutIfNeeded()
// Update the label constaints
self.titleLabel.preferredMaxLayoutWidth = self.titleLabel.frame.width
self.detailsLabel.preferredMaxLayoutWidth = self.detailsLabel.frame.width
}
Код в виде таблицы
override func viewDidLoad() {
super.viewDidLoad()
// Create and register the custom cell
self.tableView.estimatedRowHeight = 56
self.tableView.rowHeight = UITableViewAutomaticDimension
}
Код для создания ячейки
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
if let cell = tableView.dequeueReusableCellWithIdentifier("LinkCell", forIndexPath: indexPath) as? LinkTableViewCell {
// Retrieve the post and set details
let link: Link = self.linksArray.objectAtIndex(indexPath.row) as Link
cell.titleLabel.text = link.title
cell.scoreLabel.text = "\(link.score)"
cell.detailsLabel.text = link.stringCreatedTimeIntervalSinceNow() + " ago by " + link.author + " to /r/" + link.subreddit
return cell
}
return nil
}
Если вам требуется больше кода или информации, пожалуйста, спросите, и я предоставлю необходимое
Спасибо за вашу помощь!