从另一个选项卡返回后视图控制器变黑

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

【讨论】:

以上是关于从另一个选项卡返回后视图控制器变黑的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 从另一个页面操作引导选项卡

以编程方式返回选项卡栏控制器中的视图

从另一个选项卡调用 popToRootViewController

如何在选项卡栏控制器中更新选项卡上的视图

iOS 以编程方式转到选项卡和推送视图控制器

ios 最佳实践 - 导航和选项卡控制器以及推送/弹出