从另一个选项卡返回后视图控制器变黑
Posted
技术标签:
【中文标题】从另一个选项卡返回后视图控制器变黑【英文标题】:View controller goes black after returning from another tab 【发布时间】:2019-01-09 05:46:17 【问题描述】:从其他选项卡返回视图控制器时出现黑屏。
我有以下流程:
-
带有 5 个标签的标签栏。
一个名为 Points 的视图控制器,其中包含一个名为“Rewards”的按钮,该按钮连接到另一个名为 Rewards 的视图控制器。
一种。还有一个名为“Points”的按钮,它什么也不做。
湾。点视图控制器设置为“定义上下文”
C。 segue 设置为模态演示,演示设置为当前上下文。
d。还有一个名为 backFromRewards 的 segue 函数,用于放松。
Rewards 视图控制器还有一个名为“Points”的按钮,该按钮设置为通过名为 backFromRewards 的 segue 函数返回到 Points 视图控制器。
上述设置的目标是始终显示标签栏,即使奖励视图控制器是模态显示的。到目前为止,这有效。选项卡栏确实总是可见的,我可以通过分别按下“积分”和“奖励”按钮在“积分”和“奖励”视图控制器之间切换。我也可以根据需要切换到其他选项卡。
但是,当我执行以下操作时会出现黑屏:
-
从积分视图控制器中,我选择了奖励按钮。这会调出奖励视图控制器。
然后我切换到另一个选项卡。
我回到原来的标签。奖励视图控制器仍会显示。
然后我单击“点”按钮,该按钮设置为展开回点视图控制器。
这是我黑屏的时候。
然后我可以在其他地方使用 tab,然后 tab 回到点视图控制器,它会刷新恢复正常,摆脱黑屏。
我有点明白为什么屏幕变黑了。但是,有没有办法在按下选项卡按钮时重新加载和重置整个视图控制器?也许这将摆脱黑屏。否则,除了模态呈现让标签栏消失,还有其他方法吗?
【问题讨论】:
如果你从PointsVC -> 奖励按钮 -> 积分按钮没有点击不同的标签,它仍然显示黑屏吗? Mocha...不,可以,而且没有黑屏。 【参考方案1】:好吧,我想我已经弄清楚了。
我将此添加到我的奖励视图控制器中:
override func viewWillDisappear(_ animated: Bool)
self.dismiss(animated: true, completion: nil)
super.viewWillAppear(true)
这会重置视图控制器,如下所示:
-
在积分视图控制器中,我单击奖励按钮,然后它会将我带到奖励视图控制器。
然后我转到另一个选项卡,然后返回到点视图控制器。
现在,这会重新加载点视图控制器。
【讨论】:
【参考方案2】:尝试通过转到 Attributes Inspector 设置呈现控制器的 modalPresentationStyle,即 Rewards ViewController
【讨论】:
以上是关于从另一个选项卡返回后视图控制器变黑的主要内容,如果未能解决你的问题,请参考以下文章