【发布时间】:2020-01-30 04:47:42
【问题描述】:
在我的应用程序中,我有动态高度的滚动视图。 里面有一个文本视图和一个表格视图——都禁用了动态高度和滚动。 这两个元素每次只显示一次,因此如果 Text View 可见,则 Table View 不可见。
我的问题是屏幕加载后滚动视图高度没有得到正确计算,当您第一次切换到表格视图时 - 它被背景 UIView 覆盖。
如下所示:
第一张图片 - 屏幕刚刚打开,初始位置。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
output?.viewIsReady()
setSpeakerData()
contentTableView.register(UINib(nibName: "SpeakerEventsTableViewCell", bundle: nil), forCellReuseIdentifier: "speakerEventsTableViewCell")
}
override func viewWillAppear(_ animated: Bool) {
showSpeakerInfo()
}
func showSpeakerInfo() {
aboutSpeakerTextView.isHidden = false
contentTableView.isHidden = true
aboutSpeakerTextView.sizeToFit()
aboutSpeakerView.backgroundColor = blueColor
eventsView.backgroundColor = UIColor.clear
contentTableViewHeight.constant = aboutSpeakerTextView.frame.height
}
func showSpeakerEvents() {
aboutSpeakerTextView.isHidden = true
contentTableView.isHidden = false
aboutSpeakerView.backgroundColor = UIColor.clear
eventsView.backgroundColor = blueColor
contentTableViewHeight.constant = contentTableView.contentSize.height
contentTableView.reloadData()
}
奇怪的是,当您在选项卡之间切换几次时 - 一切都开始正常工作,并且 Table View 没有被后台 UIView 覆盖。
将不胜感激任何帮助!提前致谢!
【问题讨论】:
-
您是如何将组件添加到视图控制器的主视图中的?这个覆盖表格视图的背景视图是什么?
-
尝试将调用的方法放入
DispatchQueue.main.async? -
@AhmadF 我的层次结构:滚动视图 -> UIView(覆盖表格视图的那个) -> 其他视图,如文本视图、表格视图按钮等。
-
@MumtazHussain 不太明白这有什么帮助?
showSpeakerInfo和showSpeakerEvents稍后会从按钮操作中调用
标签: ios swift uitableview uiscrollview uitextview