【发布时间】:2016-08-09 11:05:58
【问题描述】:
我正在创建一个实现 Facebook 和 Twitter 服务的应用程序。在我看来,我有一个按钮可以切换是否在 Facebook/Twitter 上共享。如果 Facebook/Twitter 未连接,则按钮将显示“连接到”。
当我单击按钮时,我的控制器(不是我的视图控制器)中的一个方法将尝试切换该值,因为该控制器跟踪我的应用程序的状态。当我没有连接到社交网络时,我的控制器会注意到并调用正确的服务。该服务将启动一个 webview 来提供用户凭据。
现在我的问题是:
当我在服务中并且需要通过 web 视图提供凭据时。当我想展示这个 webview 时,我需要传递一个 View Controller 来处理展示。如何在此处提供视图控制器?
我发现的方法:
- 调用 appdelegate 单例并获取当前演示 viewcontroller(我觉得这很脏,但如果我错了,请纠正我)。
- 因为我将我的服务注入到我的控制器中 appdelegate.didFinishLaunchingWithOptions 我可以注入 UIWindow appdelegate 并询问当前呈现的视图控制器 (和第一种方法差不多)
- 创建由视图控制器实现的协议。该服务具有等于该协议的属性,并且在我的应用程序委托中注入 视图控制器进入服务。
- 在您的控制器中有一个属性 这将是presentingviewcontroller,让你的控制器 实现方法#3协议。当该协议的功能 被触发,控制器将处理它并使用 呈现 webview 的 viewcontroller 属性。我只需要 在 appdelegate 中将 viewcontroller 注入到我的控制器中。
- 不要在该服务中实现任何与视图相关的内容。
我目前的实现是方法#3。
如果有不清楚的地方,请告诉我。
感谢任何帮助! 提前致谢!
【问题讨论】:
-
您能告诉我您在查询中使用的所有类的名称和类型吗?
-
不确定查询中的类型/类是什么意思。您能否提供更多信息?
标签: ios objective-c swift xcode