使用 Swift2 从 AppDelegate 重新打开 iOS 应用程序到指定的导航控制器

Posted

技术标签:

【中文标题】使用 Swift2 从 AppDelegate 重新打开 iOS 应用程序到指定的导航控制器【英文标题】:Reopen iOS app to specified navigation controller from AppDelegate using Swift2 【发布时间】:2016-02-04 16:36:22 【问题描述】:

我正在使用 Swift 开发一个 ios 项目。我有一个嵌入在UINavigationController 中的ViewController。我的应用程序与plist 中的PDF 文件相关联。用户可以在项目中打开通过电子邮件发送给他们的PDF。我知道这会处理:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool 

    if url != "" 

        // Load from Mail App

        incomingFileTransfer = url

        incomingStatus = "Incoming"

        /*let rootViewController = self.window!.rootViewController
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let setViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainMenu") as! MainMenuViewController
        rootViewController?.navigationController?.popToViewController(setViewController, animated: false)*/

     else 

        // Regular Load

        print("App Delegate: No incoming file")

        incomingFileTransfer = nil

      

    return true
 

如果用户在应用程序的另一个区域,并且他们再次从PDF 打开应用程序,应用程序将打开回到他们所在的区域。我希望它始终向第一个加载的ViewController 打开。我查看了here 并尝试在上面的AppDelegate 部分中实现这一点,但没有成功。有人可以帮忙解决这个问题,特别是在 Swift 中吗?我不太擅长将 Objective-C 转换为 Swift。

我的ViewController 有一个Title 设置为MainMenu

ViewControllerUINavigationController 设置为Initial ViewMain 的名称:

StoryboardUINavigationController Identity Inspector 中有一个Storyboard IDMain

更新

对不起。 url 分配给全局 Variable,然后将其加载到另一个具有 WebViewViewController

【问题讨论】:

试图实现这一点,但没有成功 系统给了你一个 URL,你没有用它做任何事情,或者从导航控制器堆栈中删除任何推送的视图控制器。您在哪里打开 URL,或者让导航控制器的初始视图控制器显示 PDF? 对不起。请查看更新。 ***.com/questions/8329999/… 这篇文章应该可以满足您的需求。 如果取消注释代码会怎样?代码是否对 URL 做了任何特定的事情?初始视图控制器应该如何知道要显示什么 PDF? 取消注释代码没有任何作用。我尝试过没有成功。 【参考方案1】:

按照@NSGangster 的建议查看here,我进入我的plist 并添加了以下内容:

现在我的应用像第一次一样重新打开。

【讨论】:

以上是关于使用 Swift2 从 AppDelegate 重新打开 iOS 应用程序到指定的导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

无法在 AppDelegate coredata,Swift 2 中使用(域,代码,userInfo)调用类型“NSError”的初始化程序

AppDelegate Touch3D Xcode - TabBar

PromiseKit 3 for Swift2 中的“when”是不是已重命名?

在 AppDelegate 中使用推送通知重定向视图

新的 Swift 2.2 / Xcode 7.3.1 的 AppDelegate 问题

在推送通知 Swift 2 AppDelegate 上加载特定的 viewController