导航到另一个 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()
【问题讨论】:
你的第一个viewController
s 视图是透明的吗?
将视图控制器推入主线程并检查一次
如果你的意思是它的 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 时未调用 viewDidLoad
导航到另一个ViewController后没有获取Tabbar
从 UITableView 导航到另一个 ViewController 然后返回到 TableViewController 会导致一些元素消失