轻按后它显示颠倒视图的原因不是因为它从单元格中删除了变换。事实上,单元格上的转换保持原样,但 segue 将单元格视图拉出 tableView 的上下文。因此,单元格上的变换不再被表格上的变换抵消。
我相信你可以通过继承 UIStoryboardSegue 来解决这个问题,但是切换你在底部启动表格的方法可能会容易得多。查看有关此问题的已接受答案。
我使用了一个稍微修改的版本,它解释了导航栏和状态栏:
func updateTableContentInset() {
let numRows = tableView(self.tableView, numberOfRowsInSection: 0)
var contentInsetTop = self.tableView.bounds.size.height - (self.navigationController?.navigationBar.frame.size.height)! - 20
for i in 0..<numRows {
let rowRect = self.tableView.rectForRow(at: IndexPath(item: i, section: 0))
contentInsetTop -= rowRect.size.height
if contentInsetTop <= 0 {
contentInsetTop = 0
}
}
self.tableView.contentInset = UIEdgeInsetsMake(contentInsetTop, 0, 0, 0)
}
只需将其添加到您的 UITableViewController 并在 viewDidLoad() 上调用它,并且每次将新行添加到表中。
添加新行然后调用 updateTableContentInset() 后,您必须像这样滚动到底部:
tableView.scrollToRow(at: indexPath, at: .bottom, animated: true)
由于这里没有任何颠倒,因此您的 Peek segue 不会有任何问题。