Ios 在AppDelegate中以模态方式显示UITabBarController中的VC

Ios 在AppDelegate中以模态方式显示UITabBarController中的VC,ios,swift,appdelegate,presentmodalviewcontroller,Ios,Swift,Appdelegate,Presentmodalviewcontroller,每次打开应用程序时,我都试图从AppDelegate触发一个模式视图。我可以看到我的断点被击中,但模式从未显示。我会在故事板上加上一张图片,以防万一。它现在是一个相当简单的应用程序,带有2个选项卡栏控制器 这是我在AppDelegate中用来触发它的代码 let newVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginView") let view = win

每次打开应用程序时,我都试图从AppDelegate触发一个模式视图。我可以看到我的断点被击中,但模式从未显示。我会在故事板上加上一张图片,以防万一。它现在是一个相当简单的应用程序,带有2个选项卡栏控制器

这是我在AppDelegate中用来触发它的代码

let newVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginView")
let view = window?.rootViewController as! UITabBarController
view.selectedViewController?.show(newVC, sender: nil)

似乎
newVC
不在选项卡栏的控制器数组中,您正试图从
AppDelegate
中以模式显示它,其中可能还没有选定的视图控制器


一种解决方案是在所选视图控制器的
viewdiload
之后显示
newVC
(在
selectedIndex查看控制器)。如果演示必须在加载任何选项卡栏的视图控制器之前进行,则您可能希望将其设置为窗口的根视图控制器,并在
newVC
完成其业务后将根设置为选项卡栏

在appBecomeActive中运行代码的位置???阅读文档:似乎
newVC
不在选项卡栏的控制器数组中,您试图在
AppDelegate
中的
selectedViewController
中以模态方式显示它,其中可能还没有选定的视图控制器。请尝试
present
而不是
show
@Lukas,我认为您是对的。如果我检查选择的索引,它肯定是不正确的。我有没有别的办法?我是否应该选择0索引控制器并从那里显示它?@Lukas就是这样。我把它改为只选择0索引控制器,它就工作了。如果你想把它作为一个答案,我会把它标记为接受。从所选vc的
viewdiload
内部呈现
newVC
,让我们称之为FirstVC。要防止重复显示
newVC
,请在FirstVC中保留一个标志,您可以在
didfishlaunchingwithoptions
中设置该标志。或者在FirstVC或AppDelegate中使用静态变量来保存该标志。