从细节屏幕返回时,UITableView单元格消失

我似乎无法弄清楚为什么会发生这种情况。 我有一个自定义单元格,在堆栈视图中显示一系列UIViews的tableview。 很简单的布局。 然后我有另一个viewcontroller,我正在使用tableview中的任何选定的项目的详细信息页面。 当你点击桌面单元格时,它将把它推到导航控制器堆栈上打开详细视图。 当你按下tableview的选定单元格现在已经不见了。 但是,您仍然可以点击所在的区域,然后再次打开详细信息页面。 这就像不透明度被降低到0或什么东西。

IB中的select风格也设置为none。

这是主视图控制器:

import UIKit class PaletteTableViewController: UITableViewController { let cp1 = ColorPalette(colorsInPalette: [ColorView(color: UIColor.red, frame: CGRect.zero), ColorView(color: UIColor.purple, frame: CGRect.zero), ColorView(color: UIColor.gray, frame: CGRect.zero), ColorView(color: UIColor.green, frame: CGRect.zero)]) let cp2 = ColorPalette(colorsInPalette: [ColorView(color: UIColor.black, frame: CGRect.zero), ColorView(color: UIColor.blue, frame: CGRect.zero), ColorView(color: UIColor.brown, frame: CGRect.zero), ColorView(color: UIColor.red, frame: CGRect.zero), ColorView(color: UIColor.yellow, frame: CGRect.zero)]) // This has to be a lazy var since you can't reference self (or other properties) during initialization lazy var colorPalettes : [ColorPalette] = [cp1, cp2] override func viewDidLoad() { super.viewDidLoad() setupNavBar() setupTabBar() } func setupNavBar() { // Set the nav bar to have large titles. This is on a per instance basis navigationController?.navigationBar.prefersLargeTitles = true navigationController?.navigationBar.barTintColor = UIColor.white navigationController?.navigationBar.tintColor = UIColor.black navigationController?.navigationBar.shadowImage = UIImage() } func setupTabBar() { tabBarController?.tabBar.barTintColor = UIColor.white } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return colorPalettes.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "paletteCell", for: indexPath) as! PaletteTableViewCell // Get the current color palette let currentPalete = colorPalettes[indexPath.row] // From the current palette loop through all the color views and add them to the cell's color stack view for colorView in currentPalete.colors! { cell.colorStackView.addArrangedSubview(colorView) } return cell } override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // Get the detailviewcontroller from this current storyboard if let detailViewController = storyboard?.instantiateViewController(withIdentifier: "DetailPaletteViewController") as? DetailPaletteViewController { // Get the currently selected color palette and set that as the main color palette for the detail view detailViewController.colorPalette = colorPalettes[indexPath.row] // Push the detail view controller onto the nav bar view stack navigationController?.pushViewController(detailViewController, animated: true) } tableView.deselectRow(at: indexPath, animated: true) } } class PaletteTableViewCell: UITableViewCell { @IBOutlet weak var colorStackView: UIStackView! } 

这里是详细的视图控制器:

 import UIKit class DetailPaletteViewController: UIViewController { var colorPalette : ColorPalette! @IBOutlet weak var colorStackView: UIStackView! override func viewDidLoad() { super.viewDidLoad() // For each color view in the current color palette, add it to the stack view for it to manage each color view equally if let colors = colorPalette.colors { for colorView in colors { colorStackView.addArrangedSubview(colorView) } } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

任何帮助,将不胜感激。 我觉得我错过了简单的东西,但我不知道为什么会发生。