导航到另一个 ViewController 时 UITableView 行有问题

Posted

技术标签:

【中文标题】导航到另一个 ViewController 时 UITableView 行有问题【英文标题】:UITableView rows are buggy when navigating to another ViewController 【发布时间】:2018-09-18 07:36:55 【问题描述】:

我的应用程序中有一个 TableView,它显示了一些事件。当我单击它时,它会导航到单击的事件。 我的挣扎是,整个导航过程/动画看起来很丑陋。当新的 ViewController 已经存在时,这些行就会消失。

我设法截取了它,以便您更好地了解它的外观。

代码如下:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    tableView.deselectRow(at: indexPath, animated: false)
    guard let parent = parentVC else  return 
    guard let id = twoDimensionalEventArray[indexPath.section].events[indexPath.row].eventID else  return 
    parent.gotoEvent(eventID: id)


func gotoEvent(eventID: Int) 
    let event = eventArray[eventID]
    let eventVC = SingleEventViewController(event: event)
    self.navigationController?.pushViewController(eventVC, animated: true)

有人知道如何解决这个问题吗?

因为有两个人建议我提供 SingleEventVuewController 的 Viedloading,所以这里是:

init(event: Event) 
    thisEvent = event
    super.init(nibName: nil, bundle: nil)
    setupDefaultValues()
    self.view.backgroundColor = .white


override func viewDidLoad() 
    super.viewDidLoad()
    applyDefaultValues()
    setupNavBar()
    setupViews()
    confBounds()
    getSnapshotForLocation()

【问题讨论】:

你的第一个viewControllers 视图是透明的吗? 将视图控制器推入主线程并检查一次 如果你的意思是它的 backgroundColor 设置为 .clear,是的。 请不要将背景颜色设置为清除。它导致了这种转变 不幸的是,推入主线程并没有改变任何东西。 【参考方案1】:

像细节视图控制器的viewDidLoad() 中的self.view.backgroundColor = .white 一样将 backgroundColor 设置为白色,或者如果你这样做的话,你可以在情节提要中设置它。

【讨论】:

【参考方案2】:

在 storyboard 中将单元格的背景颜色内容视图设置为白色。请参考截图

【讨论】:

我从未在我的项目中使用故事板。 在这个方法中 -> func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell cell.contentView.backgroundColor = UIColor.white

以上是关于导航到另一个 ViewController 时 UITableView 行有问题的主要内容,如果未能解决你的问题,请参考以下文章

从一个 ViewController 导航到另一个

从一个 ViewController 导航到另一个 ViewController

推送 viewController 时未调用 viewDidLoad

导航到另一个ViewController后没有获取Tabbar

如何在单击按钮时从一个视图控制器导航到另一个视图控制器?

从 UITableView 导航到另一个 ViewController 然后返回到 TableViewController 会导致一些元素消失