我使用推送通知来通知用户应用中发生的不同类型的事件。某种类型的推送通知应该打开一个特殊的ViewController(例如,关于新聊天消息的通知确实会在单击时导航到聊天)为此,我在我的应用委托(delegate)中尝试了以下代码:funcapplicationDidBecomeActive(_application:UIApplication){ifvartopController=UIApplication.shared.keyWindow?.rootViewController{whileletpresentedViewController=topController.presen
如果不访问UINavigationController,我似乎无法获得最顶层的UIViewController。这是我目前所拥有的:UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(vc,animated:true,completion:nil)然而,它似乎并没有做任何事情。keyWindow和rootViewController似乎也是非零值,因此可选链接应该不是问题。注意:这样做不是个好主意。它打破了MVC模式。 最佳答案
如果不访问UINavigationController,我似乎无法获得最顶层的UIViewController。这是我目前所拥有的:UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(vc,animated:true,completion:nil)然而,它似乎并没有做任何事情。keyWindow和rootViewController似乎也是非零值,因此可选链接应该不是问题。注意:这样做不是个好主意。它打破了MVC模式。 最佳答案
我现在遇到了几种情况,可以很方便地找到“最顶层”ViewController(负责当前View的Controller),但还没有找到方法。基本上挑战是这样的:鉴于一个在不是ViewController的类中执行(或View)[和没有事件View的地址]并且没有传递最顶层ViewController的地址(或者说,导航Controller的地址),是否有可能找到该ViewController?(如果是的话,怎么做?)或者,如果做不到这一点,是否有可能找到最顶层的View? 最佳答案 我认为您需要将接受的答案和@fishstix结合起来
我现在遇到了几种情况,可以很方便地找到“最顶层”ViewController(负责当前View的Controller),但还没有找到方法。基本上挑战是这样的:鉴于一个在不是ViewController的类中执行(或View)[和没有事件View的地址]并且没有传递最顶层ViewController的地址(或者说,导航Controller的地址),是否有可能找到该ViewController?(如果是的话,怎么做?)或者,如果做不到这一点,是否有可能找到最顶层的View? 最佳答案 我认为您需要将接受的答案和@fishstix结合起来