【发布时间】:2015-07-10 18:13:08
【问题描述】:
我目前像这样以编程方式实例化情节提要:
var iphone35StoryBoard:UIStoryboard = UIStoryboard(name: "iphone35", bundle: nil)
var initialViewController:UIViewController = iphone35StoryBoard.instantiateInitialViewController() as! UIViewController
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
这是我第一次使用推送通知,所以我不确定最佳实践,但我想做的是在 didReceiveRemoteNotification 中,当应用程序处于活动状态(前台)时,我想能够确定用户当前在哪个视图上确定我是否应该 A)调用本地通知或 B)如果推送通知对应于可见视图,则更新视图。
使用各种其他与 SO 相关的问题,我尝试使用这些代码变体访问可见视图控制器:
let navigationController = application.windows[0].rootViewController as! UINavigationController
1)
let visibleController: AnyObject? = navigationController.visibleViewController
if visibleController is ProfileViewController {
println("this works")
}
和
2)
let viewControllers: [UIViewController] = navigationController.viewControllers as! [UIViewController]
for vc in viewControllers {
if vc is ProfileViewController {
println("this works")
}
}
3)
if let wd = self.window {
var vc = wd.rootViewController
if(vc is UINavigationController){
vc = (vc as UINavigationController).visibleViewController
}
if(vc is ProfileViewController){
println("this works")
}
}
我遇到的问题是我只能获取 rootviewcontroller 而不能获取可见视图控制器。在这种情况下,rootviewcontroller 是一个登录屏幕,尽管我在 profileViewController 上,但我只能获得 loginviewcontroller。这是处理推送通知的最佳方法吗?
【问题讨论】:
标签: swift