没有导航控制器的通知操作打开视图

时间:2016-06-16 12:35:49

标签: ios objective-c swift uiviewcontroller uinavigationcontroller

我正在做一个应用程序,它会从推送通知中打开详细信息视图。 在我的AppDelegate中,我打开视图,但视图没有导航控制器。

然后我认为我的解决方案是使用方法instantiateViewControllerWithIdentifier 处理导航控制器,我不确定这是否是解决方案,但这里是标题问题......

我的班级SlideNavigationController是Objective-C,当我使用方法时

let rootVC = UIStoryboard(name: "Main", bundle: nil).
instantiateViewControllerWithIdentifier("SlideNavigationController") as! SlideNavigationController

我收到错误:

  

警告:无法加载任何Objective-C类信息。这将显着降低可用类型信息的质量。

有什么想法吗?对不起我的英文,欢迎编辑!感谢

解决了我的UIController的问题。这是我的代码:

           let rootViewController = self.window!.rootViewController as! UINavigationController
            let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let targerView = mainStoryboard.instantiateViewControllerWithIdentifier("view_place_detail") as! VCPlaceDetailTour
            targerView.placeId = aps as String
            rootViewController.pushViewController(targerView, animated: false)

3 个答案:

答案 0 :(得分:2)

您可以使用此代码。

let rootViewController = self.window!.rootViewController as! UINavigationController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let targerView = mainStoryboard.instantiateViewControllerWithIdentifier("view Identifier") as! PromotionDetailsVC
rootViewController.pushViewController(targerView, animated: false)

我希望这会对你有所帮助。

答案 1 :(得分:1)

您可以以编程方式创建导航控制器并将所需的视图控制器设置为导航控制器的rootViewController,然后将导航控制器设置为windows rootViewController。

例如:

let rootVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SlideNavigationController") as! SlideNavigationController
let window = UIApplication.sharedApplication().keyWindow
window.rootViewController = rootVC

同样在此链接中也有所提及:set initial viewcontroller in appdelegate - swift

答案 2 :(得分:1)

您必须创建一个桥接标头才能在swift项目中使用目标c控制器。

请点击以下链接,了解有关创建桥接标题的信息。

How to find path of Bridging-Header.h - Swift, Xcode

之后,您必须在桥接头文件中导入控制器的.h文件。

现在,您可以在swift项目中轻松使用目标c视图控制器。